首页 > 解决方案 > 解码 u002522、u002522 和大量反斜杠

问题描述

我正在使用 WebClient 来获取一些网络请求:

public static string PostHttp(string url, Dictionary<string, string> headers, Dictionary<string, string> postParams)
{
    using (WebClient client = new WebClient())
    {                
        if (headers != null)
        {
            foreach (var header in headers)
            {
                client.Headers.Add(header.Key, header.Value);
            }
        }

        var reqparm = new System.Collections.Specialized.NameValueCollection();

        if (postParams != null)
        {
            foreach (var param in postParams)
            {
                reqparm.Add(param.Key, param.Value);
            }
        }


        byte[] responsebytes = client.UploadValues(url, "POST", reqparm);
        return  Encoding.UTF8.GetString(responsebytes);
    }
}

我在 Visual Studio 中得到如下信息:

\\\"see_more_cards_id\\\",\\\"href\\\":\\\"\\\\\\/page_content_list_view\\\\\\/more\\\\\\/?page_id=200168320060101&start_cursor=\\\\u00257B\\\\u002522timeline_cursor\\\\u002522\\\

在邮递员中,这里看起来更好,我只能进行 url 解码:

\"see_more_cards_id\",\"href\":\"\\\/page_content_list_view\\\/more\\\/?page_id=200168320060101&start_cursor=\%7B\%22timeline_cursor\%22\%3

在 Chrome 调试器中,如下所示:

\"see_more_cards_id\",\"href\":\"\\\/page_content_list_view\\\/more\\\/?page_id=200168320060101&start_cursor=\\u00257B\\u002522timeline_cursor\\u002522\\u00253A\\u002522timeline_unit\\

我正在寻找的是一个解码版本,如:

"see_more_cards_id","href":\"/page_content_list_view/more/?page_id=200168320060101&start_cursor={"timeline_cursor":""timeline_unit:timeline_unit: 1:00000000001564446283:04611686018427387904:091:00000000001564446283:04611686018`427387904:09

我尝试搜索像 u002522 这样的解码字符,但信息非常有限。我发现以下帖子建议使用 Uri.UnescapeDataString 但这没有解码字符。

解码字符

标签: c#utf-8decodeurldecode

解决方案


\\\\u002522

这里有很多层。

首先,有 \ 转义为 \。(这可能只是一个试图提供帮助的调试器。)所以,

\\u002522

然后有 \ 转义为 \。所以,

\u002522

然后 \u 转义为 UTF-16 代码单元

%22

然后是字节的 %-encoding(又名 URL-encoding),大概是 UTF-8 代码单元

"

推荐阅读