Jmeter接口测试响应数据中文显示为Unicode码的解决方法

问题:使用jmeter测试接口,返回响应数据汉字显示为Unicode

解决结果:

解决过程:
1.修改jmeter配置文件中的默认编码
在Jmeter的安装路径下打开bin文件夹下的jmeter.properties文件,搜索关键词default.encoding定位到语句【#sampleresult.default.encoding=ISO-8859-1】。
将注释#删掉,并改成utf-8编码,如下:

 2.添加后置处理器BeanShellPostProcessor和转码代码
添加后置处理器BeanShellPostProcessor,在Script中附上转码代码

转码代码如下:

复制
//获取响应代码Unicode编码的
        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());

 PS:
1.原理:通过BeanShell内置变量prev,获得响应数据,经过java程序编码,把Unicode代码转成中文,最后修改查看结果树中响应数据为转换完毕的中文
2.在性能试前,请把这个后置处理器删除,不然会大量消耗本机的内存和CPU,影响性能的结果

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

相关推荐

  1. pycharm控制台中文显示解决方案

    2024-01-05 22:10:01       37 阅读
  2. jmeter解决返回unicode编辑

    2024-01-05 22:10:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-05 22:10:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-05 22:10:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-05 22:10:01       87 阅读
  4. Python语言-面向对象

    2024-01-05 22:10:01       96 阅读

热门阅读

  1. 76 BFS解单词接龙

    2024-01-05 22:10:01       56 阅读
  2. c# 设置文件夹隐藏

    2024-01-05 22:10:01       59 阅读
  3. LeetCode解法汇总1276. 不浪费原料的汉堡制作方案

    2024-01-05 22:10:01       57 阅读
  4. React Grid Layout基础使用

    2024-01-05 22:10:01       52 阅读
  5. Css中默认与继承

    2024-01-05 22:10:01       60 阅读
  6. SSH协议中发现新安全漏洞CVE-2023-48795

    2024-01-05 22:10:01       74 阅读
  7. 变量和对象的解构赋值

    2024-01-05 22:10:01       56 阅读
  8. android c++打印堆栈

    2024-01-05 22:10:01       69 阅读
  9. PHP命令行脚本接收传入参数的三种方式

    2024-01-05 22:10:01       50 阅读
  10. 使用Python国产API框架开发REST接口

    2024-01-05 22:10:01       44 阅读