ISO-8859对请求后内容C#进行编码

本文关键字:编码 请求 ISO-8859 | 更新日期: 2023-09-27 18:24:14

我正在尝试用C#发送一个POST请求,该请求的参数编码为ISO-8859。我使用的是这个代码:

        using (var wb = new WebClient())
        {
            var encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
            var encodedText = System.Web.HttpUtility.UrlEncode("åæ ÆÆ øØ ø", encoding);
            wb.Encoding = encoding;
            wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            var data = new NameValueCollection();
            data["TXT"] = encodedText;
            var response = wb.UploadValues(_url, "POST", data);
        }

我已经计算出"åæ ÆÆ øØ ø"的正确编码字符串是%E5%E6+%C6%C6++%F8%D8+%F8,在调试时我可以看到encodedText实际上就是这个字符串。然而,当在fiddler中检查原始请求时,我可以看到字符串看起来像这样:TXT=%25e5%25e6%2B%25c6%25c6%2B%25f8%25d8%2B%25f8。我猜在调用UploadValues()之后或期间,对字符串进行了某种额外的编码。

事先非常感谢。

ISO-8859对请求后内容C#进行编码

我在谷歌上查了一下。根据另一个关于WebClient.UploadValues的UTF32 SO的问题?(第二个答案),Webclient.UploadValues()确实对自己进行了编码。但是,它执行ASCII编码。你必须使用另一种方法来上传这个,比如HttpWebRequest