Hi Ben, Sorry for late answer.
I have problems with Mono System.Web at my cygwin, so if there is anyone still interested in solving the problem, I attach the unittest and the fix here, please check they are correct. The unittest is based on the test I made successfully on dotnet and Grasshopper after applying the patch. Regards, Andrew. Index: System.Web/HttpUtility.cs =================================================================== --- System.Web/HttpUtility.cs (revision 55002) +++ System.Web/HttpUtility.cs (working copy) @@ -650,7 +650,7 @@ int end = offset + count; for (int i = offset; i < end; i++) { char c = (char) bytes [i]; - if ((c == ' ') || (c < '0' && c != '-' && c != '.') || + if ((c == ' ') || (c < '0' && c != '-' && c != '.' && c != '*') || (c < 'A' && c > '9') || (c > 'Z' && c < 'a' && c != '_') || (c > 'z')) { Index: Test/System.Web/HttpUtilityTest.cs =================================================================== --- Test/System.Web/HttpUtilityTest.cs (revision 55002) +++ Test/System.Web/HttpUtilityTest.cs (working copy) @@ -131,6 +131,21 @@ Assert.AreEqual ("%7f", HttpUtility.UrlEncodeUnicode ("" + (char) 127), "#4"); Assert.AreEqual ("%u0080", HttpUtility.UrlEncodeUnicode ("" + (char) 128), "#5"); } + + [Test] + public void UrlEncode () + { + string expected = "%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f%10%11%12%13%14%15%16%1 7%18%19%1a%1b%1c%1d%1e%1f+!%22%23%24%25%26'()*%2b%2c-.%2f0123456789%3a%3 b%3c%3d%3e%3f%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5b%5c%5d%5e_%60abcdefghijklmn opqrstuvwxyz%7b%7c%7d%7e%7f"; + StringBuilder sb = new StringBuilder (); + for (char c=Char.MinValue; c<128; c++) + sb.Append (System.Web.HttpUtility.UrlEncode(c.ToString())); + Assert.AreEqual (expected, sb.ToString ()); + for (char c=(char)128; c < Char.MaxValue; c++) { + string s = c.ToString(); + Assert.IsTrue (s != System.Web.HttpUtility.UrlEncode(s), + "UrlEncode must escape character '"+s+"'"); + } + } } } > -----Original Message----- > From: Ben Maurer [mailto:[EMAIL PROTECTED] > Sent: Thursday, December 22, 2005 01:14 > To: Andrew Skiba > Cc: [EMAIL PROTECTED]; Mono-devel-list@lists.ximian.com > Subject: Re: [Mono-dev] UrlEncode difference in dotnet and mono > > > Hi Gonzalo, > > > > I found that UrlEncode behaves differently in dotnet and > Mono, namely > > Mono encodes the asterisk (*) symbol into %2a. > > > > The following code prints different values, for example: > > > > public static void Main () > > { > > Console.Out.WriteLine > > (System.Web.HttpUtility.UrlEncode("aaa*bbb")); > > } > > > > A naive fix might be like this, but may be there are > similar problems > > with other characters. What do you think? > > This should really come with a unit test. In fact, what > really should be done is to generaate a table of UrlEncode > (c) for c in [0...char.MaxValue] on msft and check that we > give the same results. This would make sure we have no other issues. > > -- Ben > > > _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list