[ https://issues.apache.org/jira/browse/CXF-3855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13131637#comment-13131637 ]
Daniel Kulp commented on CXF-3855: ---------------------------------- Actually, I think it should be escaped to %d8%61 to go into a URI? Right? If I do: {code} String orig = new String(new byte[] {-47, -122}, "UTF-8"); orig = "/foo" + orig + ".txt"; String s = URIParserUtil.escapeChars(orig); assertEquals(orig, new File(new URI("file:" + s)). {code} it fails as the URI doesn't decode properly with the old code or your code. If I use %d8%61, it passes. Does anyone agree/disagree with that? > Incorrect character escaping by URIParserUtil > --------------------------------------------- > > Key: CXF-3855 > URL: https://issues.apache.org/jira/browse/CXF-3855 > Project: CXF > Issue Type: Bug > Components: Tooling > Affects Versions: 2.4.2 > Reporter: Jenya Pisarenko > Priority: Minor > Labels: parse, utf-8, util > > Class URIParserUtil. Function escapeChars(String s) produces incorrect result > for characters, which utf-8 representation is greater than 1 byte length. > For example, character "ц" ([-47, -122] in utf-8) is encoded as "%d861", but > expected value is "%d186". > This patch should fix the problem. > {noformat} > --- URIParserUtil.java 2011-10-11 18:02:59.786548800 +0400 > +++ URIParserUtil.java 2011-10-11 18:03:09.544548800 +0400 > @@ -236,8 +236,9 @@ > b.setCharAt(x++, '%'); > for (int y = 0; y < bytes.length; y++) { > b.insert(x++, HEX_DIGITS.charAt((bytes[y] & 0xFF) >> > 4)); > - b.insert(x, HEX_DIGITS.charAt(bytes[y] & 0x0F)); > + b.insert(x++, HEX_DIGITS.charAt(bytes[y] & 0x0F)); > } > + x--; > } catch (UnsupportedEncodingException e) { > //should not happen > } > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira