You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by da...@apache.org on 2007/01/13 20:00:21 UTC

svn commit: r495944 - /cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/util/RequestParameters.java

Author: danielf
Date: Sat Jan 13 11:00:20 2007
New Revision: 495944

URL: http://svn.apache.org/viewvc?view=rev&rev=495944
Log:
Applied patch http://issues.apache.org/jira/browse/COCOON-1950 - org.apache.cocoon.blocks.util.RequestParameters incorrectly parses Multi-byte symbols, from Bohdan Mushkevych.

Modified:
    cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/util/RequestParameters.java

Modified: cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/util/RequestParameters.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/util/RequestParameters.java?view=diff&rev=495944&r1=495943&r2=495944
==============================================================================
--- cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/util/RequestParameters.java (original)
+++ cocoon/trunk/core/cocoon-blocks-fw/cocoon-blocks-fw-impl/src/main/java/org/apache/cocoon/blocks/util/RequestParameters.java Sat Jan 13 11:00:20 2007
@@ -50,9 +50,15 @@
                     break;
                 case '%':
                     try {
-                        sb.append((char) Integer.parseInt(s.substring(i+1, i+3),
-                              16));
-                        i += 2;
+                        if (s.charAt(i+1) == 'u') {
+                            // working with multi-byte symbols in format %uXXXX
+                            sb.append((char)Integer.parseInt(s.substring(i+2, i+6), 16));
+                            i += 5; // 4 digits and 1 symbol u
+                        } else {
+                            // working with single-byte symbols in format %YY
+                            sb.append((char)Integer.parseInt(s.substring(i+1, i+3), 16));
+                            i += 2;
+                        }
                     } catch (NumberFormatException e) {
                         throw new IllegalArgumentException();
                     } catch (StringIndexOutOfBoundsException e) {