C#中与JavaScript的unescape()功能相当的是什么?

9

我想要分析一些 JavaScript,其中有一行是:

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

这段文本中有很多形式为%uxxxx的字符。

我想用重写,但无法找到适当的函数来解码这种字符的字符串。我已经尝试过以下方法:

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

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

我怎样才能在c#中实现这个?


1
你混淆了两种不同的转义/反转义方法:一种是用于HTML文件中的实体,另一种是用于URL,即地址。 - Philip Daubmeier
6个回答

14
你可以使用UrlDecode函数:
string decoded = HttpUtility.UrlDecode("%u4141%u4141");

decoded会包含"䅁䅁"

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


4

2
您可以调用下面的方法来实现与JavaScript的escape/unescape方法相同的效果。
Microsoft.JScript.GlobalObject.unescape();

Microsoft.JScript.GlobalObject.escape();

0

编辑 web.config 文件中的以下参数:

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


0
将百分号改为反斜杠,即可得到 C# 字符串字面量。C# 将 \uxxxx 视为转义序列,其中 xxxx 为 4 位数字。

注意:这仅适用于操作源代码中硬编码的字符串。也许他想解码输入到程序中的某些字符串。那么HttpUtility.UrlDecode就是正确的方法... - Philip Daubmeier

0
在基本字符串用法中,您可以使用Unicode初始化字符串变量: var someLine="\u4141"; 如果可能的话,请将所有“%u”替换为“\u”。

1
请注意:这仅适用于操作源代码中的硬编码文本。也许他想解码输入到程序中的一些字符串。那么 HttpUtility.UrlDecode 是正确的选择... - Philip Daubmeier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接