1. 程式人生 > >C# 簡單POST請求同時防止中文亂碼的出現

C# 簡單POST請求同時防止中文亂碼的出現

概要

在網路請求當中,總有可能會出現一些因為編碼的問題而導致請求/傳送出去的中文字元變成了亂碼的情況,而這些情況大多都是因為對網路的請求/迴應沒有做好編碼而導致的。在這裡,我將要講述一些我自己解決這些亂碼的情況的經驗

中文亂碼現象

出現亂碼的現象可以分為兩種,一種是傳送出去的資料是亂碼,其中一種表現應該就是你想要將某些中文字元的字串儲存在資料庫當中,結果,一儲存就變成了一堆???了。另一種則是請求回來的資料變成亂碼,現象也是差不多,同樣會導致一堆???

而解決的方案也比較簡單,通常來說,要是沒有特殊的要求,使用UTF-8的編碼方式足以應對大多數的情況了。要做的只需要保證POST請求傳送是將字串轉化為UTF-8

格式的位元組流,以及在收到POST請求時將位元組流按UTF-8的格式進行解碼即可

程式碼實現

這是一個簡單實現POST網路請求方法

        public static string HttpPost(string url,string postDataStr)
        {
            string strReturn;
            //在轉換位元組時指定編碼格式
            byte[] byteData = Encoding.UTF8.GetBytes(postDataStr);  

            //配置Http協議頭
            HttpWebRequest resquest= (HttpWebRequest)WebRequest.Create(url);
            resquest.Method = "POST"
; resquest.ContentType = "application/x-www-form-urlencoded"; resquest.ContentLength = byteData.Length; //傳送資料 using (Stream resquestStream = resquest.GetRequestStream()) { resquestStream.Write(byteData, 0, byteData.Length); } //接受並解析資訊
using (WebResponse response = req.GetResponse()) { //解決亂碼:utf-8 + streamreader.readToEnd StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")); strReturn = reader.ReadToEnd(); reader.Close(); reader.Dispose(); } return strReturn; }