public static String decode(String encodedValue, final String encoding) {
    try {
      if (encodedValue != null) {
        String previousEncodedValue;

        do {
          previousEncodedValue = encodedValue;
          encodedValue = URLDecoder.decode(encodedValue, encoding);
        } while (!encodedValue.equals(previousEncodedValue));
      }

      return encodedValue;
    } catch (UnsupportedEncodingException ignore) {
      return encodedValue;
    }
  }
Decodes the encoded String value using the specified encoding (such as UTF-8). It is assumed
the String value was encoded with the URLEncoder using the specified encoding. This method
handles UnsupportedEncodingException by just returning the encodedValue. Since it is possible
for a String value to have been encoded multiple times, the String value is decoded until the
value stops changing (in other words, until the value is completely decoded).
<p>

@param encodedValue the encoded String value to decode.
@param encoding a String value specifying the encoding.
@return the decoded value of the String. If the encoding is unsupported, then the encodedValue
        is returned.
@see java.net.URLDecoder
geode-web/src/main/java/org/apache/geode/management/internal/web/util/UriUtils.java