code: public static void parseParameters( Map<String, String[]> map,
                                          String data,
                                          String encoding ) throws UnsupportedEncodingException {
  
          if ((data != null) && (data.length() > 0)) {
  
              // use the specified encoding to extract bytes out of the
              // given string so that the encoding is not lost. If an
              // encoding is not specified, let it use platform default
              byte[] bytes = null;
              try {
                  if (encoding == null) {
                      bytes = data.getBytes();
                  } else {
                      bytes = data.getBytes(encoding);
                  }
              } catch (UnsupportedEncodingException uee) {
              }
  
              parseParameters(map, bytes, encoding);
          }
  
      }
docs: Append request parameters from the specified String to the specified Map. It is presumed that the specified Map is not
  accessed from any other thread, so no synchronization is performed.
  <p>
  <strong>IMPLEMENTATION NOTE</strong>: URL decoding is performed individually on the parsed name and value elements, rather
  than on the entire query string ahead of time, to properly deal with the case where the name or value includes an encoded
  "=" or "&" character that would otherwise be interpreted as a delimiter.
  
  @param map Map that accumulates the resulting parameters
  @param data Input string containing request parameters
  @param encoding
  @throws UnsupportedEncodingException if the data is malformed