1. 程式人生 > >關於Http請求後返回json亂碼的問題

關於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亂碼的問題

其實很多時候我們在做http請求資料返回的時候經常會莫名發現會出現亂碼,大部分時候我們都覺得是編碼不對造成的。 一般情況下正常我們預設都是作個很簡單的操作,直接使用UTF-8編碼基本問題就搞定了 HttpWebRequest request; request = (H

loadrunner介面請求返回中文亂碼入坑

情景:在練習過程中,模擬請求一個介面,在返回中,中文亂碼 程式碼如下 web_reg_save_param("response", "LB={", "RB=}", "Search=All",

http請求資料返回json中string欄位包含unicode的轉碼

public static String decodeUnicode(String theString) {            char aChar;            int len = theString.length();            StringBuffer outBuffer = 

java發起http請求獲取返回Json物件

話不多說,先看程式碼! /** * Created by david on 2017-7-5. */ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import

ajax請求返回的時間轉換格式

mda err 時間轉換 simple str tex pro 轉換格式 class 1.以前見過[email protected]/* */(pattern = "yyyy-MM-dd hh:mm:ss") 這種方式,但是最近用的時候不好使 2.一個比較不通

AKKA HTTP查詢結果返回JSON字串

akka http有一個json模組專門用於處理json和scala型別之間的轉換,通常介面以json格式作為結果響應格式,如果使用此功能,在專案的配置中引入json包,gradle引入如下: compile 'com.typesafe.akka:akka-http-spray-json_2

ajax請求後臺返回json的兩種處理方法

1.使用SpringMvc的@ResponseBody註解(直接將資料寫入到流中),這種方法需要在springmvc-config.xml檔案中進行編碼配置,具體如下 後臺程式碼: springmvc-config.xml配置檔案,需要新增jackson相關jar包: 2.直

Jmeter深度學習第一天——簡單請求、帶header請求返回亂碼問題

    Jmeter是一個比較通用的介面測試和壓測工具,而且還可以根據需要做二次開發,後續公司可能有壓測的需求,效能測試作為一項基本技能,還是有必要學起來。 一、安裝和啟動     1. 下載安裝包,官網最新版5.0:http://jmeter.apache.org/download_jmeter.cgi;檔

SpringMVC在處理Ajax請求返回void導致前臺Ajax回撥函式不執行

問題簡述 在一次SpringMVC專案中,前臺通過Ajax請求,準備修改資料庫中的資料。因為Ajax請求只是讓後臺更改資料,所以Controller方法根本不需要返回給前臺任何資料,所以我們將Controller的方法的返回值設定為void。但令我困擾的是,前端頁面本應該執行的回撥函式一直不

spring boot 攔截器實現攔截前端請求返回json至前端頁面

攔截器主體 import com.alibaba.fastjson.JSONObject; import com.ufclub.vis.constant.StatusConstant; import com.ufclub.vis.entity.BaseResult; imp

HttpClient 傳送get請求返回Json資料

一、以百度百科介面為例二、程式碼package com.XXXX.tv.vrs.service; import java.io.IOException; import org.apache.http

HttpClient Get請求返回中文亂碼問題解決

1、Get請求中中文亂碼問題,在程式碼中修改了"utf-8"編碼格式,在web.xml檔案中也進行了相應的過濾"utf-8"編碼格式,在tomacat中也配置了URIEncoding="UTF-8",但是在Get請求的時候,返回值依然是中文亂碼。 // 遠端呼叫userC

java模擬HTTP請求,傳送JSON資料

private static String DEFAULT_CHARSET = "utf-8";/** 連線超時時間,由bean factory設定,預設為8秒鐘 */private int defaultConnectionTimeout = 8000;/** 迴應超時時間, 由bean factory設定

Java http 請求頭帶中文亂碼

String url = "http://www.android100.org/extend/search.php?sebox=學習"; 傳遞到服務端的中文字元是亂碼,程式碼修改如下: String url = "http://wwwandroid100

配置ajax請求springmvc返回json格式資料

首先在controller的方法返回值(返回值型別為實體類)上增加@ResponseBody註解 然後兩種配置方式如下: 方式一:spring4.0以及之後版本推薦 pom.xml增加如下依賴包 &l

Spring MVC全域性異常返回JSON異常資料

問題:         當前專案是作為手機APP後臺支援,使用spring mvc + mybaits + shiro進行開發。後臺服務與手機端互動是傳送JSON資料。如果後臺發生異常,會直接返回異常頁面,顯示異常內容,如果是404請求不到資源或者500這類伺服器的問題,可能會導致返回404和500異常

解決python介面測試返回json亂碼問題,解決如下:

req = requests.post(url="http://192.168.229.128:8080/cms/manage/loginJump.do",

IOS請求網路返回JSON解析

-(NSDictionary*)Login:(NSString *)email password:(NSString *)password { NSMutableDictionary *resultsDictionary;// 返回的 JSON 資料 NSDic

前臺使用$.ajax()傳送json資料,伺服器響應返回json資料例項(struts2+json+action)

最近在做ping++,用到了服務端接收前端的json並且響應後發回json格式資料到前端的功能。現在就把我寫的例子貼在這裡,供大家參考。 //首先,貼上前端的程式碼: <%

Springmvc返回JSON亂碼問號

@RequestMapping(value="/book/getBook.do", produces = "text/html;charset=UTF-8") public @ResponseBody String getBook(String name){ Lis