编码\解码字符串的问题JS< - > C#

时间:2010-10-12 12:19:48

标签: c# javascript encoding urlencode

我在JS编码中遇到问题,然后在C#服务器中解码。 我使用javascript encode()函数 - 但是当我有像+这样的特殊字符时,C#有httputility.urldecode() - >并将其转换为就像它是SPACE char一样。

通信JS编码和C#解码的最佳方式是什么?

我有<a href='javascript:foo(escape('hello +'))' />

function foo(data)
{
$.ajax({ url: "http:/....." + data, dataType: 'html', context: document.body
...
...
}

我调试了服务器,我得到'hello ++' - 它不知道哪个是哪个(空格或+) 谢谢!

3 个答案:

答案 0 :(得分:2)

Javascript encode执行 html 编码。由于+在HTML中有效,因此它对+无效。

但是,您通过URL传递此字符串 - URL上的+表示编码空间。

如果您希望在服务器端正确编码+,则需要使用javascript encodeURIComponent

<a href='javascript:foo(encodeURIComponent('hello +'))' />

您需要了解HTML编码和网址编码是different things

答案 1 :(得分:2)

的javascript:

escape(string);

C#:

Microsoft.JScript.GlobalObject.unescape(string);

这种组合对我来说很好。

答案 2 :(得分:-1)

无需在javascript中进行编码并在c#中进行解码。只需使用'encodeURIComponent(string)'javascript函数,无需对c#代码进行任何更改。