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

Posted 一个处女座的测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、想学习却无从下手,该如何学习?
这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

2、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

​ 3、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

自动化测试框架项目:Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架

最后送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦!

以上是关于Jmeter接口测试响应数据中文显示为Unicode码的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

解决jmeter做接口测试时响应数据中文显示乱码或者Unicode码的问题

Android使用接口修改个人信息中文响应是乱码

Jmeter响应内容显示乱码解决办法

jmeter接口测试,取样器结果和请求都没有问题,但是响应数据是错的?

jmeter-察看结果树-响应数据,中文显示乱码问题处理

关于Jmeter响应数据中文乱码问题