c#与javascript's unescape()的等价是什么?

本文关键字:是什么 unescape javascript | 更新日期: 2023-09-27 18:03:41

我试图分析一些JavaScript,一行是

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

有大量%uxxxx形式的字符

我想重写JavaScriptc#,但不能找出适当的功能来解码这样的一串字符。我试过了

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

,但这并没有改变这些字符。

我如何在c#中完成这个?

c#与javascript's unescape()的等价是什么?

您可以使用UrlDecode:

string decoded = HttpUtility.UrlDecode("%u4141%u4141");

decoded将包含"䅁䅁"

正如其他人指出的那样,将%更改为'可以工作,但UrlDecode是首选方法,因为这确保了其他转义符号也被正确翻译。

您需要HttpUtility.UrlDecode。现在大多数情况下你不应该使用escape/unescape,你应该使用encodeURI/decodeURI/encodeURIComponent

什么时候你应该使用转义而不是encodeURI/encodeuriccomponent ?

这个问题涵盖了为什么escape/unescape是一个坏主意的问题。

您可以调用bellow方法来实现与Javascript转义/不转义方法相同的效果

Microsoft.JScript.GlobalObject.unescape();
Microsoft.JScript.GlobalObject.escape();

将%符号更改为反斜杠,您将获得c#字符串文字。c#将'uxxxx视为转义序列,其中xxxx为4位数字。

在基本字符串使用中,您可以在Unicode中初始化字符串变量:var someLine = " ' u4141";如果可能-将所有"%u"替换为"'u"。

编辑网页。配置如下参数:

< system.web >中的< globalization requestEncoding="iso-8859-15" responseEncoding="utf-8" >responseHeaderEncoding="utf-8"