我有一个需要一些参数的URL.这些参数的值可以是重音字符,所以我绝对需要对它们进行UrlEncode.奇怪的是,我发现行为或Javascript和.NET之间存在差异.
让我们假装我尝试将"éléphant"这个词用于UrlEncode.在JavaScript中(根据此WebSite:http://www.albionresearch.com/misc/urlencode.php),我得到以下内容:%E9l%E9phant.这对我来说是正确的.但是,在这个调用的.NET中(System.Web.HttpUtility.UrlEncode("éléphant"))我得到"%c3%a9l%c3%a9phant".怎么了?我错过了什么?如果我想在.NET中获得%E9l%E9phant,我该怎么办?
谢谢!
System.Web.HttpUtility.UrlEncode将使用UTF8(我认为..)作为其默认编码器,您可以通过指定一个来更改它.
System.Web.HttpUtility.UrlEncode("éléphant", Encoding.Default); // %e9l%e9phant
虽然可能最好指定实际的代码页或不是,而不是依赖于操作系统默认值.
在JavaScript中(根据此WebSite:http://www.albionresearch.com/misc/urlencode.php),我得到以下内容:%E9l%E9phant.
那页错了.JavaScript也使用UTF-8,默认情况下是.NET.亲自尝试一下:
javascript:alert(encodeURIComponent('éléphant')) %C3%A9l%C3%A9phant
今天的网址是UTF-8.不要再尝试使用cp1252了.UTF-8是你的朋友.相信UTF-8!
参考:
js: %E9 l %E9 phant .net: %c3 %a9 l %c3 %a9 phant
不同之处在于,一个是UTF-8
URL编码,而另一个是ANSI
URL编码.
在.NET中,尝试:
Dim a As String = System.Web.HttpUtility.UrlEncode( _ "éléphant", _ Text.Encoding.Default)
我明白了
%e9 l %e9 phant
结果是.这与您为JavaScript提供的字符串匹配,但Hex字符大小写除外.