Author: markt
Date: Fri Apr 28 19:29:42 2017
New Revision: 1793136

URL: http://svn.apache.org/viewvc?rev=1793136&view=rev
Log:
Code review while investigating expanding the use of Charset for encoding 
rather than String.
URLs (when %nn encoded) should always be in US-ASCII. Simplify the decode 
method on that basis.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/buf/UDecoder.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/UDecoder.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/UDecoder.java?rev=1793136&r1=1793135&r2=1793136&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/buf/UDecoder.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/buf/UDecoder.java Fri Apr 28 
19:29:42 2017
@@ -328,7 +328,7 @@ public final class UDecoder {
      * Decode and return the specified URL-encoded String.
      *
      * @param str The url-encoded string
-     * @param enc The encoding to use; if null, the default encoding is used. 
If
+     * @param enc The encoding to use; if null, ISO-8859-1 is used. If
      * an unsupported encoding is specified null will be returned
      * @param isQuery Is this a query string being processed
      * @return the decoded string
@@ -336,28 +336,19 @@ public final class UDecoder {
      * by a valid 2-digit hexadecimal number
      */
     public static String URLDecode(String str, String enc, boolean isQuery) {
-        if (str == null)
-            return (null);
+        if (str == null) {
+            return null;
+        }
+
+        // URLs are always in US-ASCII
+        byte[] bytes = str.getBytes(StandardCharsets.US_ASCII);
 
-        // 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, use ISO-8859-1
-        byte[] bytes = null;
-        try {
-            if (enc == null) {
-                bytes = str.getBytes(StandardCharsets.ISO_8859_1);
-                enc = "ISO-8859-1";
-            } else {
-                bytes = str.getBytes(B2CConverter.getCharset(enc));
-            }
-        } catch (UnsupportedEncodingException uee) {
-            if (log.isDebugEnabled()) {
-                log.debug(sm.getString("uDecoder.urlDecode.uee", enc), uee);
-            }
+        // If an encoding is not specified, use ISO-8859-1
+        if (enc == null) {
+            enc = "ISO-8859-1";
         }
 
         return URLDecode(bytes, enc, isQuery);
-
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to