Re: [xwiki-devs] [xwiki-notifications] r25938 - platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util
Hi Sergiu, On Dec 26, 2009, at 6:48 PM, sdumitriu (SVN) wrote:
Author: sdumitriu Date: 2009-12-26 18:48:37 +0100 (Sat, 26 Dec 2009) New Revision: 25938
Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/ Util.java Log: XWIKI-4704: Always use UTF-8 for URL encoding Done.
Could we have some comments below to explain why we're using UTF8 with some link pointing to the RFC you mentioned? I think it would help remember it for the future. Thanks -Vincent
Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ util/Util.java =================================================================== --- platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/ Util.java 2009-12-26 00:29:36 UTC (rev 25937) +++ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/ Util.java 2009-12-26 17:48:37 UTC (rev 25938) @@ -29,8 +29,6 @@ import java.io.Reader; import java.io.StreamTokenizer; import java.io.StringReader; -import java.net.URLDecoder; -import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -46,6 +44,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;
+import org.apache.commons.httpclient.util.URIUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ArrayUtils; @@ -67,7 +66,6 @@ import org.xml.sax.SAXException; import org.xwiki.container.Container;
-import com.novell.ldap.util.Base64; import com.xpn.xwiki.XWikiContext; import com.xpn.xwiki.XWikiException; import com.xpn.xwiki.monitor.api.MonitorPlugin; @@ -759,7 +757,7 @@ public static String encodeURI(String text, XWikiContext context) { try { - return URLEncoder.encode(text, context.getWiki().getEncoding()); + return URIUtil.encodeWithinQuery(text); } catch (Exception e) { return text; } @@ -775,17 +773,7 @@ public static String decodeURI(String text, XWikiContext context) { try { - // Make sure + is considered as a space - String result = text.replaceAll("\\+", " "); - - // It seems Internet Explorer can send us back UTF-8 - // instead of ISO-8859-1 for URLs - if (Base64.isValidUTF8(result.getBytes(), false)) { - result = new String(result.getBytes(), "UTF-8"); - } - - // Still need to decode URLs - return URLDecoder.decode(result, context.getWiki().getEncoding()); + return URIUtil.decode(text); } catch (Exception e) { return text; }
On 12/26/2009 06:51 PM, Vincent Massol wrote:
Hi Sergiu,
On Dec 26, 2009, at 6:48 PM, sdumitriu (SVN) wrote:
Author: sdumitriu Date: 2009-12-26 18:48:37 +0100 (Sat, 26 Dec 2009) New Revision: 25938
Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/ Util.java Log: XWIKI-4704: Always use UTF-8 for URL encoding Done.
Could we have some comments below to explain why we're using UTF8 with some link pointing to the RFC you mentioned? I think it would help remember it for the future.
Well, the code doesn't mention UTF-8 anywhere. We're simply forwarding to URIUtil from commons-httpclient, which internally uses URI.getDefaultProtocolCharset(), which references the needed RFC. I'll add some text in the method Javadoc.
Thanks -Vincent
Modified: platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ util/Util.java =================================================================== --- platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/ Util.java 2009-12-26 00:29:36 UTC (rev 25937) +++ platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/util/ Util.java 2009-12-26 17:48:37 UTC (rev 25938) @@ -29,8 +29,6 @@ import java.io.Reader; import java.io.StreamTokenizer; import java.io.StringReader; -import java.net.URLDecoder; -import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -46,6 +44,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;
+import org.apache.commons.httpclient.util.URIUtil; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.ArrayUtils; @@ -67,7 +66,6 @@ import org.xml.sax.SAXException; import org.xwiki.container.Container;
-import com.novell.ldap.util.Base64; import com.xpn.xwiki.XWikiContext; import com.xpn.xwiki.XWikiException; import com.xpn.xwiki.monitor.api.MonitorPlugin; @@ -759,7 +757,7 @@ public static String encodeURI(String text, XWikiContext context) { try { - return URLEncoder.encode(text, context.getWiki().getEncoding()); + return URIUtil.encodeWithinQuery(text); } catch (Exception e) { return text; } @@ -775,17 +773,7 @@ public static String decodeURI(String text, XWikiContext context) { try { - // Make sure + is considered as a space - String result = text.replaceAll("\\+", " "); - - // It seems Internet Explorer can send us back UTF-8 - // instead of ISO-8859-1 for URLs - if (Base64.isValidUTF8(result.getBytes(), false)) { - result = new String(result.getBytes(), "UTF-8"); - } - - // Still need to decode URLs - return URLDecoder.decode(result, context.getWiki().getEncoding()); + return URIUtil.decode(text); } catch (Exception e) { return text; }
-- Sergiu Dumitriu http://purl.org/net/sergiu/
participants (2)
-
Sergiu Dumitriu -
Vincent Massol