UrlEncode - Javascript与C#

Mar*_*tin 6 javascript c# encoding urlencode

我有一个需要一些参数的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,我该怎么办?

谢谢!

Sci*_*ist 10

System.Web.HttpUtility.UrlEncode将使用UTF8(我认为..)作为其默认编码器,您可以通过指定一个来更改它.

System.Web.HttpUtility.UrlEncode("éléphant", Encoding.Default); // %e9l%e9phant
Run Code Online (Sandbox Code Playgroud)

虽然可能最好指定实际的代码页或不是,而不是依赖于操作系统默认值.


bob*_*nce 7

在JavaScript中(根据此WebSite:http://www.albionresearch.com/misc/urlencode.php),我得到以下内容:%E9l%E9phant.

那页错了.JavaScript也使用UTF-8,默认情况下是.NET.亲自尝试一下:

javascript:alert(encodeURIComponent('éléphant'))
%C3%A9l%C3%A9phant
Run Code Online (Sandbox Code Playgroud)

今天的网址是UTF-8.不要再尝试使用cp1252了.UTF-8是你的朋友.相信UTF-8!


End*_*ssa 5

参考:

js:       %E9 l     %E9 phant
.net: %c3 %a9 l %c3 %a9 phant
Run Code Online (Sandbox Code Playgroud)

不同之处在于,一个是UTF-8URL编码,而另一个是ANSIURL编码.

在.NET中,尝试:

Dim a As String = System.Web.HttpUtility.UrlEncode( _
    "éléphant", _
    Text.Encoding.Default)
Run Code Online (Sandbox Code Playgroud)

我明白了

    %e9 l     %e9 phant
Run Code Online (Sandbox Code Playgroud)

结果是.这与您为JavaScript提供的字符串匹配,但Hex字符大小写除外.