C# 간단한 POST 요청과 동시에 중국어 무분별한 부호화 방지

2449 단어
개요
네트워크 요청에서 인코딩 문제로 인해 요청/발송된 중국어 문자가 난코드로 변할 수 있다. 이러한 상황은 대부분 네트워크의 요청/응답에 대한 인코딩이 제대로 되지 않아 발생한 것이다.여기서, 나는 나 자신이 이런 난장판을 해결한 경험을 이야기할 것이다
중국어 부호화 현상
부호화가 발생하는 현상은 두 가지로 나눌 수 있는데 하나는 발송된 데이터가 부호화되는 것이다. 그 중 하나는 바로 네가 일부 중국어 문자의 문자열을 데이터베이스에 저장하고 싶다는 것이다. 그 결과 저장하자마자 한 무더기가 된다???됐어.다른 하나는 요청한 데이터가 엉망으로 변하는 현상도 많지 않은데 똑같이 한 무더기???
해결 방안도 비교적 간단하다. 일반적으로 특별한 요구가 없으면 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;
        }

좋은 웹페이지 즐겨찾기