From: Miguel de Icaza Date: Wed, 21 Dec 2005 12:01:27 +0000 (-0000) Subject: 2005-12-21 Miguel de Icaza X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=e0aca138efd106119ce602b5a353bf64f559f446;p=mono.git 2005-12-21 Miguel de Icaza * HttpUtility.cs (UrlEncodeUnicode): The generated encoding of unicode values must be in %XXXX format, not %XX sometimes. svn path=/trunk/mcs/; revision=54690 --- diff --git a/mcs/class/System.Web/System.Web/ChangeLog b/mcs/class/System.Web/System.Web/ChangeLog index e29aabf9293..e4f7650d34a 100644 --- a/mcs/class/System.Web/System.Web/ChangeLog +++ b/mcs/class/System.Web/System.Web/ChangeLog @@ -1,3 +1,8 @@ +2005-12-21 Miguel de Icaza + + * HttpUtility.cs (UrlEncodeUnicode): The generated encoding of + unicode values must be in %XXXX format, not %XX sometimes. + 2005-12-08 Robert Jordan * MimeTypes.cs: added entry for "jpg". diff --git a/mcs/class/System.Web/System.Web/HttpUtility.cs b/mcs/class/System.Web/System.Web/HttpUtility.cs index c24a5cf5533..d8064e1cd64 100644 --- a/mcs/class/System.Web/System.Web/HttpUtility.cs +++ b/mcs/class/System.Web/System.Web/HttpUtility.cs @@ -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; diff --git a/mcs/class/System.Web/Test/System.Web/HttpUtilityTest.cs b/mcs/class/System.Web/Test/System.Web/HttpUtilityTest.cs index d4f1b92f962..91ff21a5a32 100644 --- a/mcs/class/System.Web/Test/System.Web/HttpUtilityTest.cs +++ b/mcs/class/System.Web/Test/System.Web/HttpUtilityTest.cs @@ -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"); + } } }