工作中常見(jiàn)的jmeter調(diào)用接口時(shí)遇到亂碼有3種情況
1.訪問(wèn)httpbin.org時(shí),入?yún)髦形?,響?yīng)中包含入?yún)⒌臄?shù)據(jù)時(shí),中文顯示為unicode

image.png
2.訪問(wèn)百度首頁(yè)時(shí),接口返回的是亂碼(是真正的亂碼,根本看不出來(lái)是什么字母)

image.png
3.請(qǐng)求響應(yīng)中的出參應(yīng)顯示中文,現(xiàn)在是?

image.png
解決方法:
此時(shí),我們可以先嘗試將jmeter配置文件jmeter.properties 修改其中一行(在安裝jmeter時(shí)的目錄里)
sampleresult.default.encoding=UTF-8
一定記得改完配置文件后重啟jemeter

image.png

image.png
但是httpbin.org中的響應(yīng)還是unicode,沒(méi)有變化。
那只能繼續(xù)想其他方法:
1.在線程組右擊增加HTTP信息頭管理器
增加Content-Type:application/json;charset=UTF-8
重新執(zhí)行后,在 【查看結(jié)果樹(shù)】 中查看響應(yīng),沒(méi)有作用
2.在線程組中右擊點(diǎn)擊【添加】--后置處理器--BeanShell PostProcessor
在腳本里寫(xiě)上
prev.setDataEncoding("utf-8");
重新執(zhí)行,在 【查看結(jié)果樹(shù)】 中查看響應(yīng),沒(méi)有作用
3.繼續(xù)網(wǎng)上找解決方案,看到在后置處理器中添加另一種腳本
重新執(zhí)行,在 【查看結(jié)果樹(shù)】 中查看響應(yīng),終于顯示成中文了

image.png
腳本如下:
//獲取響應(yīng)代碼Unicode編碼的
String s2=new String(prev.getResponseData(),"UTF-8");
//---------------以下步驟為轉(zhuǎn)碼過(guò)程---------------
char aChar;
int len= s2.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s2.charAt(x++);
if(aChar=='\\'){
aChar= s2.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s2.charAt(x++);
switch(aChar){
case'0':
case'1':
case'2':
case'3':
case'4':
case'5':
case'6':
case'7':
case'8':
case'9':
value=(value <<4)+aChar-'0';
break;
case'a':
case'b':
case'c':
case'd':
case'e':
case'f':
value=(value <<4)+10+aChar-'a';
break;
case'A':
case'B':
case'C':
case'D':
case'E':
case'F':
value=(value <<4)+10+aChar-'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");}}
outBuffer.append((char) value);}else{
if(aChar=='t')
aChar='\t';
else if(aChar=='r')
aChar='\r';
else if(aChar=='n')
aChar='\n';
else if(aChar=='f')
aChar='\f';
outBuffer.append(aChar);}}else
outBuffer.append(aChar);}
//-----------------以上內(nèi)容為轉(zhuǎn)碼過(guò)程---------------------------
//將轉(zhuǎn)成中文的響應(yīng)結(jié)果在查看結(jié)果樹(shù)中顯示
prev.setResponseData(outBuffer.toString());
4.HTTP請(qǐng)求填寫(xiě)內(nèi)容編碼
出現(xiàn)第三種情況,可以再去檢查下HTTP請(qǐng)求中的內(nèi)容編碼,這里沒(méi)有填寫(xiě)任何編碼,現(xiàn)在填寫(xiě)上utf-8后,再次請(qǐng)求后,中文顯示成功

image.png

image.png