如何解码用 JavaScriptStringEncoded 编码的字符串?

Posted

技术标签:

【中文标题】如何解码用 JavaScriptStringEncoded 编码的字符串?【英文标题】:How to decode a string encoded with JavaScriptStringEncoded? 【发布时间】:2013-02-05 15:14:45 【问题描述】:

有没有一种方法可以在 C# 中解码使用 HttpUtility.javascriptStringEncode() 编码的字符串?

示例编码字符串:

<div class=\"header\"><h2>\u00FC<\/h2><script>\n<\/script>\n

我的临时解决办法是:

public static string JavaScriptStringDecode(string source)

    // Replace some chars.
    var decoded = source.Replace(@"\'", "'")
                .Replace(@"\""", @"""")
                .Replace(@"\/", "/")
                .Replace(@"\t", "\t")
                .Replace(@"\n", "\n");

    // Replace unicode escaped text.
    var rx = new Regex(@"\\[uU]([0-9A-F]4)");

    decoded = rx.Replace(decoded, match => ((char)Int32.Parse(match.Value.Substring(2), NumberStyles.HexNumber))
                                            .ToString(CultureInfo.InvariantCulture));

    return decoded;

【问题讨论】:

【参考方案1】:

不,您必须自己实现。原因是这种方法没有有意使用!对于您可能想要实现的目标,为什么不直接使用

HttpServerUtility.htmlEncode(...)

HttpServerUtility.HtmlDecode(...)

【讨论】:

预期用途是网页内容解析器。我不拥有内容。【参考方案2】:

你可以使用

HttpUtility.UrlDecode

http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode(v=vs.110).aspx

也在这里回答:Unescape JavaScript's escape() using C#

但是,UrlDecode 对某些字符(如 + 符号,javascript 不会取消转义)和任何字符值 >= 128 有一些重大限制。使用 Microsoft.JScript.GlobalObject.unescape 可能是最可靠的,但我不'不知道它的性能如何(即支持语言是什么。我想它很快,因为此时它是一个库)。

【讨论】:

【参考方案3】:

我使用 HttpUtility.UrlEncode 而不是 HttpUtility.JavaScriptStringEncode,然后 HttpUtility.UrlDecode。

【讨论】:

以上是关于如何解码用 JavaScriptStringEncoded 编码的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何解码用 JavaScriptStringEncoded 编码的字符串?

如何使用java解码用openssl aes-128-cbc编码的字符串?

如何看rmvb格式视频的分辨率和解码值?

DAC解码器有用吗?电脑用

2023-02-18:ffmpeg是c编写的音视频编解码库,请问用go语言如何调用?例子是03输出版本号。

如何传超长的字符串到后台