Jmeter后置处理器解析unicode 编码转换

使用Jmeter过程中发现,从查看结果树看到部分内容需要decode,此处参考曲线救国的方法。

步骤:

  添加后置处理器-BeanShell PostProcessor

  在scripts处添加相关代码,之后执行即可

 1 //获取响应代码Unicode编码的
 2 
 3         String s2=new String(prev.getResponseData(),"UTF-8");
 4 //---------------以下步骤为转码过程---------------
 5         char aChar;
 6         int len= s2.length();
 7         StringBuffer outBuffer=new StringBuffer(len);
 8         for(int x =0; x <len;){
 9             aChar= s2.charAt(x++);
10             if(aChar=='\\'){
11                 aChar= s2.charAt(x++);
12                 if(aChar=='u'){
13                     int value =0;
14                     for(int i=0;i<4;i++){
15                         aChar= s2.charAt(x++);
16                         switch(aChar){
17                             case'0':
18                             case'1':
19                             case'2':
20                             case'3':
21                             case'4':
22                             case'5':
23                             case'6':
24                             case'7':
25                             case'8':
26                             case'9':
27                                 value=(value <<4)+aChar-'0';
28                                 break;
29                             case'a':
30                             case'b':
31                             case'c':
32                             case'd':
33                             case'e':
34                             case'f':
35                                 value=(value <<4)+10+aChar-'a';
36                                 break;
37                             case'A':
38                             case'B':
39                             case'C':
40                             case'D':
41                             case'E':
42                             case'F':
43                                 value=(value <<4)+10+aChar-'A';
44                                 break;
45                             default:
46                                 throw new IllegalArgumentException(
47                                         "Malformed   \\uxxxx  encoding.");}}
48                     outBuffer.append((char) value);}else{
49                     if(aChar=='t')
50                         aChar='\t';
51                     else if(aChar=='r')
52                     aChar='\r';
53                     else if(aChar=='n')
54                     aChar='\n';
55                     else if(aChar=='f')
56                     aChar='\f';
57                     outBuffer.append(aChar);}}else
58                 outBuffer.append(aChar);}
59 //-----------------以上内容为转码过程---------------------------
60 //将转成中文的响应结果在查看结果树中显示
61         prev.setResponseData(outBuffer.toString());

猜你喜欢

转载自www.cnblogs.com/mncasey/p/10579017.html