我在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 ++' - 它不知道哪个是哪个(空格或+) 谢谢!
答案 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#代码进行任何更改。