1. 程式人生 > >jmeter中文亂碼及Unicode轉中文

jmeter中文亂碼及Unicode轉中文

data alt bean 再次 encoding rev address 設置 測試的

在測試的過程中傳入中文測試,亂碼問題

1、get請求傳入中文參數address:中國雲南省

技術分享圖片

技術分享圖片

request請求中已經正確顯示參數(可能跟我之前配置過有關系),如果沒有正確顯示,在http取樣器後面新建一個BeanShell Sampler(並列關系)

scrip裏編輯代碼:prev.setDataEncoding("utf-8");再次運行就可以,不用重啟jmeter

技術分享圖片

再查看response響應信息 address返回值是Unicode編碼的

技術分享圖片

在http請求中添加後置處理器BeanShell PostProcessor,scrip中編輯代碼:

String s=new String(prev.getResponseData(),"UTF-8");
char aChar;
int len= s.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s.charAt(x++);
if(aChar==‘\\‘){
aChar= s.charAt(x++);
if(aChar==‘u‘){
int value =0;
for(int i=0;i<4;i++){
aChar= s.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);}
prev.setResponseData(outBuffer.toString());

 再次執行,查看響應結果,address顯示亂碼

技術分享圖片

打開jmeter.properties(jmeter的bin目錄下)把默認的編碼改成utf-8,並把註釋取消保存,重啟jmeter

技術分享圖片

再次運行,響應信息顯示正確

技術分享圖片

2、Post請求傳遞中文參數

技術分享圖片

技術分享圖片

響應亂碼,修改post請求,Content encoding設置成utf-8

技術分享圖片

再次運行:參數顯示Unicode編碼,

技術分享圖片

post請求再次建立後置處理器BeanShell PostProcessor內容與上面一致

再次運行成功

技術分享圖片

 

jmeter中文亂碼及Unicode轉中文