【问题标题】:what is the c# equivalent to javascript's unescape()?c# 相当于 javascript 的 unescape() 是什么?
【发布时间】:2011-10-13 14:45:19
【问题描述】:

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

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

%uxxxx 表单中有很多字符。

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

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

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

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

【问题讨论】:

  • 您混合了两种不同的转义/取消转义方法:一种用于 HTML 文件中的实体,另一种用于 URL,即地址。

标签: javascript c# .net


【解决方案1】:

你可以使用UrlDecode:

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

decoded 将包含"䅁䅁"

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

【讨论】:

    【解决方案2】:

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

    When are you supposed to use escape instead of encodeURI / encodeURIComponent?

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

    【讨论】:

      【解决方案3】:

      你可以调用bellow方法来达到和Javascript escape/unescape方法一样的效果

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

      【讨论】:

        【解决方案4】:

        将 % 符号更改为反斜杠,您就有了一个 C# 字符串文字。 C# 将 \uxxxx 视为转义序列,其中 xxxx 为 4 位。

        【讨论】:

        • 注意:这仅适用于字符串是操作源代码中的硬编码文字的情况。也许他想解码一些输入到程序中的字符串。然后HttpUtility.UrlDecode 是要走的路...
        【解决方案5】:

        在基本字符串用法中,您可以在 Unicode 中启动字符串变量: var someLine="\u4141"; 如果可能 - 将所有“%u”替换为“\u”。

        【讨论】:

        • 注意:这仅适用于字符串是操作源代码中的硬编码文字的情况。也许他想解码一些输入到程序中的字符串。然后HttpUtility.UrlDecode 是要走的路...
        【解决方案6】:

        编辑 web.config 的以下参数:

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

        【讨论】:

          猜你喜欢
          • 2021-01-17
          • 2023-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-11
          • 2019-06-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多