【问题标题】:How to decode "\u0026" in a URL?如何解码 URL 中的“\u0026”?
【发布时间】:2013-06-23 19:27:49
【问题描述】:

我想将 URL A 解码为 B

A) http:\/\/example.com\/xyz?params=id%2Cexpire\u0026abc=123

B) @987654321@

这是一个示例 URL,我正在寻找不是 A.Replace("\/", "/")... 的通用解决方案

目前我使用HttpUtility.UrlDecode(A, Encoding.UTF8)和其他Encodings但无法生成URLB

【问题讨论】:

  • \/ 头部已经在水下,为时已晚。你不可能把手臂翻译成/
  • @Hanse:这是Google 有时使用的格式。

标签: c# url urldecode


【解决方案1】:

你只需要这个函数

System.Text.RegularExpressions.Regex.Unescape(str);

【讨论】:

    【解决方案2】:

    这是我想出的一个基本示例:

    static void Sample()
    {
        var str = @"http:\/\/example.com\/xyz?params=id%2Cexpire\u0026abc=123";
        str = str.Replace("\\/", "/");
        str = HttpUtility.UrlDecode(str);
        str = Regex.Replace(str, @"\\u(?<code>\d{4})", CharMatch);
        Console.Out.WriteLine("value = {0}", str);
    }
    
    private static string CharMatch(Match match)
    {
        var code = match.Groups["code"].Value;
        int value = Convert.ToInt32(code, 16);
        return ((char) value).ToString();
    }
    

    这可能会丢失很多,具体取决于您要获取的 URL 类型。它不处理错误检查,文字转义,如\\u0026 应该是\u0026。我建议围绕这个编写一些单元测试,并使用各种输入来开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      • 2014-08-17
      • 2022-12-11
      • 2015-05-26
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多