天天看點

Jmeter關于響應結果中文亂碼及中文斷言失敗問題

1.encoding編碼修改配置

打開apache-jmeter-2.11\bin\jmeter.properties檔案,搜尋“encoding”關鍵字,找到如下配置:

# The encoding to be used if none is provided (default ISO-8859-1)

#sampleresult.default.encoding=ISO-8859-1

将注釋删掉,并改成utf-8編碼,即:

 The encoding to be used if none is provided (default utf-8)

sampleresult.default.encoding=utf-8

重新開機JMeter即可

2.在相應節點的下方,比如http請求,添加後置處理器–》BeanShellPostProcessor ,然後在其腳本框中添加如下代碼 

prev.setDataEncoding(“UTF-8”) 即可

3. 關于中文斷言結果失敗問題,

Jmeter關于響應結果中文亂碼及中文斷言失敗問題
Jmeter關于響應結果中文亂碼及中文斷言失敗問題

在後面添加後置處理器BeanShellPostProcessor,添加以下代碼 ,再次啟動,就可以了

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());

--------------------- 

Jmeter關于響應結果中文亂碼及中文斷言失敗問題