【问题标题】:javascript escaped string is not getting unescaped with c# regex.Unescape()javascript 转义字符串不会被 c# regex.Unescape() 转义
【发布时间】:2012-04-23 06:07:59
【问题描述】:

我正在从 JavaScript 向 c# 控制器发送一个转义字符串,现在我希望它在 c# 中取消转义。

我在c# 中使用了regex.Unescape(),但它不起作用。那么,我将如何在c# 中取消它?

【问题讨论】:

  • 你能在 C# 和 javascript 中转义相同的字符串吗?每个字符串的结果是什么?可以发一下吗?
  • 你是如何用 JavaScript 转义字符串的?

标签: javascript c# .net escaping


【解决方案1】:

使用Uri.UnescapeUnescapeDataString,见this page

【讨论】:

  • 感谢您的回答,但它无法显示异常 Invalid URI,我正在发送“
  • 也许你应该尝试使用URIEncodeComponent客户端,而不是escape
  • @Ates Goral,是的。抱歉,注意力不集中,同时处理几件事情。
【解决方案2】:

如果您需要Unicode 支持并且您无法使用在System.Web 中实现的unescape 功能,您可以改用以下替换语句:

string str = "%u0442%u043E%u0432%u0430%20%u0435%20text%20%14%u20AC";

//replace Unicode characters
str = Regex.Replace(str, @"%U([0-9A-F]{4})",  match => ((char)int.Parse( match.Groups[1].Value, NumberStyles.HexNumber ) ).ToString(),RegexOptions.IgnoreCase );
//now replace ASCII character
str = Regex.Replace(str, @"%([0-9A-F]{2})",  match => ((char)int.Parse( match.Groups[1].Value, NumberStyles.HexNumber ) ).ToString(),RegexOptions.IgnoreCase );

Console.WriteLine(str);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2015-01-01
    • 2011-06-16
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多