什么是c#相当于javascript的unescape()?

时间:2011-07-26 17:09:48

标签: javascript c# .net

我正在尝试分析一些JavaScript,一行是

var x = unescape("%u4141%u4141 ......"); 

表单%uxxxx中有很多字符。

我想重写JavaScript中的c#,但无法找出解码像这样的字符串的正确函数。我试过了

HttpUtility.HTMLDecode("%u4141%u4141");

但这并没有改变这些角色。

如何在c#中完成此操作?

6 个答案:

答案 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 >