关于Http请求后返回json乱码的问题
Posted 露水浮云--【濮蹄訄澱】
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Http请求后返回json乱码的问题相关的知识,希望对你有一定的参考价值。
其实很多时候我们在做http请求数据返回的时候经常会莫名发现会出现乱码,大部分时候我们都觉得是编码不对造成的。
一般情况下正常我们默认都是作个很简单的操作,直接使用UTF-8编码基本问题就搞定了
HttpWebRequest request;
request = (HttpWebRequest)WebRequest.Create(strURL);
request.Method = "GET";
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
Stream s;
s = response.GetResponseStream();
string StrDate = "";
string strValue = "";
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
strValue += StrDate + "\\r\\n";
}
基本问题就OK了,但有时候却并不一定,比如如果事实上编码并不是这样呢?
我们就需要去判断当前正确编码方式,来确定
根据当前返回的类型正确的编码方式来读对应的流即可解决问题。
But 有时候却并不一定是编码造成的。。。
比如:如果使用了压缩呢???
假如在Header头中有压缩呢? 比如:我们使用了gzip
这时候就变了,我们不能再使用普通的
这种方式了,而是应该使用Gzip的流的方式
当然还有别的Header的设置,比如transEncoding等等,所以我们做这种数据请求的时候出现乱码不用慌,细心去分析Header头中返回的信息,根据Header中的相关设置作相关处理。
顺便说下本次其实也是在做一个天气预报的实验中发现了该乱码现象,
默认在浏览器中我们看到
在多种浏览器中返回均是乱码,用IE11打开也是,但右键更改编码为UTF-8后正常
But我们程序更改为UTF-8依然不行啊。。。
当我们采用默认请求方式时,使用UTF-8
结果为:
悲催啊。。。
加断点,查看Response中相关信息,我们看到对应的Header中内容编码方式为gzip方式。。。
直接修改这部分流的读取方式如下:
返回结果为:
结果正常了。。。所以面对这种乱码问题应该细心去查请求和响应头和内容中的各种信息。
以此小经验作个小记录
以上是关于关于Http请求后返回json乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章
(java)jsp页面ajax发出请求返回json格式数据 中文乱码问题
关于Node.js中HTTP请求返回数据需要JSON解析的问题
关于HttpClient模拟浏览器请求的參数乱码问题解决方式