我試圖在C#中發送一個POST請求,參數編碼爲ISO-8859
。我使用此代碼:ISO-8859編碼後發送請求內容C#
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()
之後或期間,正在對字符串進行某種額外的編碼。
非常感謝你提前。
我認爲你編碼你的文本兩次,首先通過使用UrlEncode進行編碼,然後通過在您的Web客戶端指定編碼。你可以嘗試沒有指定wb.Encoding或不使用UrlEncode? – Nzall 2014-09-24 07:57:06
謝謝,我試圖帶走wb.Encoding,它不幸的給了相同的結果。 – 2014-09-24 08:03:22
我想我知道會發生什麼。 wb.UploadValues自己做一個無證的編碼。雖然我不確定。你可以嘗試沒有任何編碼?編輯:我找到了另一個答案。我會通過鏈接更新答案。 – Nzall 2014-09-24 08:14:18