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/