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;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值