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()
之后或期间,对字符串进行了某种额外的编码。
事先非常感谢。
我在谷歌上查了一下。根据另一个关于WebClient.UploadValues的UTF32 SO的问题?(第二个答案),Webclient.UploadValues()
确实对自己进行了编码。但是,它执行ASCII编码。你必须使用另一种方法来上传这个,比如HttpWebRequest
。