【问题标题】:Replace ASCII characters with their equivalent将 ASCII 字符替换为等效字符
【发布时间】:2012-07-12 16:30:00
【问题描述】:

我正在使用 JavaScript 在 cookie 中设置一个值,并在后面的代码中获取 cookie 的内容。

但问题是,如果我用一些特殊字符或空白字符存储字符串,当我检索 cookie 的内容时,特殊符号将被转换为 ASCII 等价物。

例如,如果我想将 Adam - (SET) 存储在 cookie 中,它会被转换为 Adam%20-%20%28SET%29 并被存储,当我检索它时,我会得到相同的 Adam%20-%20%28SET%29。但我想在后面的代码中得到这个Adam - (SET)

我是如何得到这个的。请帮忙。

【问题讨论】:

  • 你想在c#中进行检索吗?
  • 你能澄清一下是否需要在 JS 或 C# 中解码?

标签: c# javascript cookies


【解决方案1】:

C#

用途:

String decoded = HttpUtility.UrlDecode(EncodedString);

HttpUtility.UrlDecode() 是您可以在 .NET Framwework 中使用的大多数其他替代方案所使用的底层函数(见下文)。

如有必要,您可能需要指定编码。

或者:

String decoded = Uri.UnescapeDataString(s);

请参阅 Uri.UnescapeDataString() 的文档了解一些注意事项。

JavaScript

var decoded = decodeURIComponent(s);

在按照其他问题的建议继续使用 unescape 之前,请阅读 decodeURIComponent vs unescape, what is wrong with unescape? 。您可能还想阅读What is the difference between decodeURIComponent and decodeURI?

【讨论】:

  • @Bibhu:不客气,很高兴它有帮助。如果您对其中一个答案感到满意,请使用投票柜台下方的勾号表示接受。
【解决方案2】:

您可以使用 JS 中的unescape 函数来做到这一点。

var str = unescape('Adam%20-%20%28SET%29');

【讨论】:

    【解决方案3】:

    您正在寻找HttpUtility.UrlDecode()(我认为是在 System.Web 命名空间中)

    【讨论】:

      【解决方案4】:

      在 javasrcipt 中,您可以使用内置的 decodeURIComponent,但我怀疑字符串编码是在将值发送到服务器时发生的,因此 C# 答案就是您想要的。

      【讨论】:

        猜你喜欢
        • 2013-01-26
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2010-10-12
        相关资源
        最近更新 更多