2005-12-21 Miguel de Icaza <miguel@novell.com>
authorMiguel de Icaza <miguel@gnome.org>
Wed, 21 Dec 2005 12:01:27 +0000 (12:01 -0000)
committerMiguel de Icaza <miguel@gnome.org>
Wed, 21 Dec 2005 12:01:27 +0000 (12:01 -0000)
* HttpUtility.cs (UrlEncodeUnicode): The generated encoding of
unicode values must be in %XXXX format, not %XX sometimes.

svn path=/trunk/mcs/; revision=54690

mcs/class/System.Web/System.Web/ChangeLog
mcs/class/System.Web/System.Web/HttpUtility.cs
mcs/class/System.Web/Test/System.Web/HttpUtilityTest.cs

index e29aabf9293b44728a1dc99f427388829c291718..e4f7650d34a431b1cd302cbf59a378d19730a4a0 100644 (file)
@@ -1,3 +1,8 @@
+2005-12-21  Miguel de Icaza  <miguel@novell.com>
+
+       * HttpUtility.cs (UrlEncodeUnicode): The generated encoding of
+       unicode values must be in %XXXX format, not %XX sometimes.
+
 2005-12-08 Robert Jordan  <robertj@gmx.net> 
 
        * MimeTypes.cs: added entry for "jpg".
index c24a5cf5533568d1a788e6b72786a69ad7a34474..d8064e1cd64f68bd88ef35f7560de1102171ff45 100644 (file)
@@ -673,10 +673,9 @@ namespace System.Web {
                                return null;
 
                        StringBuilder result = new StringBuilder ();
-                       int end = str.Length;
-                       for (int i = 0; i < end; i++) {
+                       foreach (char c in str){
                                int idx;
-                               char c = str [i];
+
                                if (c > 255) {
                                        result.Append ("%u");
                                        idx = ((int) c) >> 24;
@@ -694,7 +693,7 @@ namespace System.Web {
                                    (c < 'A' && c > '9') ||
                                    (c > 'Z' && c < 'a' && c != '_') ||
                                    (c > 'z')) {
-                                       result.Append ('%');
+                                       result.Append ("%00");
                                        idx = ((int) c) >> 4;
                                        result.Append (hexChars [idx]);
                                        idx = ((int) c) & 0x0F;
index d4f1b92f9622b52d52145be4b0a4e25e31a007eb..91ff21a5a32109adeccf4857fe6887f6470c7ff1 100644 (file)
@@ -119,7 +119,15 @@ namespace MonoTests.System.Web {
                                        " + \"&mid=\" + ModuleID + \"&pageindex=\" + Request.Params.Get(\"pageindex\") %>";
                        Assert.AreEqual (str, HttpUtility.HtmlDecode (str));
                }
-               
+
+               [Test]
+               public void UrlEncodeUnicodeTest ()
+               {
+                       string str = "schön";
+
+                       Assert.AreEqual (str, HttpUtility.UrlEncodeUnicode ("sch%00f6n"), "#1");
+                       Assert.AreEqual ("abc", "abc", "#2");
+               }
        }
 }