code: public String escapeQueryParam(final String text, final String encoding) {
          return UriEscape.escapeUriQueryParam(text, encoding);
      }
docs: <p>
  Perform am URI query parameter (name or value) <strong>escape</strong> operation
  on a {@code String} input.
  </p>
  <p>
  This method simply calls the equivalent method in the {@code UriEscape} class from the
  <a href="http://www.unbescape.org">Unbescape</a> library.
  </p>
  <p>
  The following are the only allowed chars in an URI query parameter (will not be escaped):
  </p>
  <ul>
  <li>{@code A-Z a-z 0-9}</li>
  <li>{@code - . _ ~}</li>
  <li>{@code ! $ ' ( ) * , ;}</li>
  <li>{@code : @}</li>
  <li>{@code / ?}</li>
  </ul>
  <p>
  All other chars will be escaped by converting them to the sequence of bytes that
  represents them in the specified <em>encoding</em> and then representing each byte
  in {@code %HH} syntax, being {@code HH} the hexadecimal representation of the byte.
  </p>
  <p>
  This method is <strong>thread-safe</strong>.
  </p>
  
  @param text the {@code String} to be escaped.
  @param encoding the encoding to be used for escaping.
  @return The escaped result {@code String}. As a memory-performance improvement, will return the exact
  same object as the {@code text} input argument if no escaping modifications were required (and
  no additional {@code String} objects will be created during processing). Will
  return {@code null} if {@code text} is {@code null}.