我正在尝试分析一些JavaScript
,一行是
var x = unescape("%u4141%u4141 ......");
表单%uxxxx
中有很多字符。
我想重写JavaScript
中的c#
,但无法找出解码像这样的字符串的正确函数。我试过了
HttpUtility.HTMLDecode("%u4141%u4141");
但这并没有改变这些角色。
如何在c#中完成此操作?
答案 0 :(得分:13)
您可以使用UrlDecode:
string decoded = HttpUtility.UrlDecode("%u4141%u4141");
然后 decoded
将包含"䅁䅁"
。
正如其他人所指出的那样,将%
更改为\
会有效,但UrlDecode
是首选方法,因为这样可以确保其他转义符号也能正确转换。< / p>
答案 1 :(得分:4)
您需要HttpUtility.UrlDecode
。在大多数情况下,你现在不应该使用escape/unescape
,你应该使用像encodeURI/decodeURI/encodeURIComponent
这样的东西。
When are you supposed to use escape instead of encodeURI / encodeURIComponent?
This question涵盖了为什么escape/unescape
是个坏主意的问题。
答案 2 :(得分:2)
您可以调用bellow方法来实现与Javascript escape / unescape方法相同的效果
Microsoft.JScript.GlobalObject.unescape();
Microsoft.JScript.GlobalObject.escape();
答案 3 :(得分:0)
将%符号更改为反斜杠,并且您有一个C#字符串文字。 C#将\ uxxxx视为转义序列,xxxx为4位数。
答案 4 :(得分:0)
在基本字符串用法中,您可以在Unicode中启动字符串变量: var someLine =“\ u4141”; 如果可能 - 将所有“%u”替换为“\ u”。
答案 5 :(得分:0)
编辑web.config以下参数:
< globalization requestEncoding="iso-8859-15" responseEncoding="utf-8" >responseHeaderEncoding="utf-8"
中的 < system.web >