Jmeter乱码问题解决方法

一、背景

在使用Jmeter做性能测试、接口自动化测试时,经常会碰到接口乱码的问题,乱码问题一般分为参数化时编码格式不统一问题,还有就是服务器响应编码的问题,如图所示。

二、接口响应内容编码问题

对于接口响应内容乱码导致的问题,一般可以通过修改Jmeter配置文件,或者对响应内容进行编码解决乱码问题,具体方法如下所示:

方法1、修改Jmeter配置文件

这种方法是修改Jmeter的配置文件,修改其默认编码,可以有效的解决乱码问题,但是不足之处是每次遇到都需要进行修改。

首先,找到Jmeter的安装目录(比如,C:\apache-jmeter-5.3\bin),再找到bin目录下jmeter.properties

然后,右键点击编辑jmeter.properties搜索default.encoding ,把默认编码修改为项目所用编码,去掉“#”然后保存。

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

改为:

sampleresult.default.encoding=UTF-8

最好,再重启Jmeter。

方法2、修改接口响应编码

除了修改配置文件编码,还可以根据接口文档,配置接口编码的方式。

首先,在线程组中添加 BeanShell PostProcessor 后置处理器,如图所示:

然后,在 Script 中填写 prev.setDataEncoding("utf-8");

prev.setDataEncoding("utf-8");

注意:
1、具体编码以接口文档为准;
2、脚本编码符号需是英文符号;

最终,可以看到编码问题已解决。

注意:其实还存在某些接口,postman请求时,响应是正常,但是用jmeter请求,响应中文就会乱码,这可能是jmeter编码是根据操作系统编码导致。在国内中文windows系统的字符集编码是gbk(CP936)mac系统中文编码是utf-8

三、接口请求参数编码问题

方法3、请求接口参数问题

对于接口参数包含中文内容,导致乱码的问题,一般在接口请求时,设置编码方式可以解决乱码问题,具体方法如下所示:

比如百度搜索时,参数中包含中文

请求接口参数显示乱码

然后,指定编码方式为utf-8

最终,请求参数显示为中文

方法4、CSV文件编码格式问题

由于参数化时,引入的csv文件中,csv文件编码方式与JMeter不一致时,会造导致中文乱码问题,此时需要修改配置文件。

找到Jmeter的安装目录(比如,C:\apache-jmeter-5.3\bin),再找到bin目录下jmeter.properties,找到 csvdataset.file.encoding_list,在最新版本的jmeter中,默认已经打开并修改。

csvdataset.file.encoding_list=UTF-8|UTF-16|ISO-8859-15|US-ASCII

注意:

  • 性能测试时,并不推荐采用csv进行参数化,推荐用txt,因为txt的性能更好,不容易出现乱码问题。由于txt文件默认编码是utf-8,而csv文件默认编码不是utf-8,这就导致使用csv时,容易出现乱码。
  • 如果在工作中,出现jmeter读取csv文件内容时乱码,那很可能是csv文件编码格式与系统不一致,此时,用记事本打开csv文件,选择编码为utf-8保存。

四、参考

1、天气接口:http://www.weather.com.cn/data/sk/101010100.html

2、天气接口:https://www.cnblogs.com/wangjingblogs/p/3192953.html

3、unicode编码问题:https://www.lmlphp.com/user/56/article/item/11853/

posted @ 2022-10-31 14:57  xyztank  阅读(3787)  评论(0编辑  收藏  举报