code: public static void escapeUriFragmentId(final Reader reader, final Writer writer)
              throws IOException {
          escapeUriFragmentId(reader, writer, DEFAULT_ENCODING);
      }
docs: <p>
  Perform am URI fragment identifier <strong>escape</strong> operation
  on a <tt>Reader</tt> input using <tt>UTF-8</tt> as encoding,
  writing results to a <tt>Writer</tt>.
  </p>
  <p>
  The following are the only allowed chars in an URI fragment identifier (will not be escaped):
  </p>
  <ul>
  <li><tt>A-Z a-z 0-9</tt></li>
  <li><tt>- . _ ~</tt></li>
  <li><tt>! $ &amp; ' ( ) * + , ; =</tt></li>
  <li><tt>: @</tt></li>
  <li><tt>/ ?</tt></li>
  </ul>
  <p>
  All other chars will be escaped by converting them to the sequence of bytes that
  represents them in the <tt>UTF-8</tt> and then representing each byte
  in <tt>%HH</tt> syntax, being <tt>HH</tt> the hexadecimal representation of the byte.
  </p>
  <p>
  This method is <strong>thread-safe</strong>.
  </p>
  
  @param reader the <tt>Reader</tt> reading the text to be escaped.
  @param writer the <tt>java.io.Writer</tt> to which the escaped result will be written. Nothing will
  be written at all to this writer if input is <tt>null</tt>.
  @throws IOException if an input/output exception occurs
  
  @since 1.1.2