jmeter接口测试--响应结果Unicode转码成中文

时间:2025-04-28 15:38:02

jmeter接口测试-响应结果Unicode转码成中文

一般情况下,接口返回数据都会经过加密,所以有时相应结果会显示为Unicode,因此,需添加BeanShell PostProcessor,加入代码将其转为中文

1.线程中添加BeanShell PostProcessor

jmeter接口测试--响应结果Unicode转码成中文

2.添加代码

String s2=new String(prev.getResponseData(),"UTF-8");

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

prev.setResponseData(outBuffer.toString());

如图:

jmeter接口测试--响应结果Unicode转码成中文