由于个人在JMeter 3.0的实际应用中,脚本中的Test Plan/Sampler等元件命名都没有使用中文,所以在之前介绍Dashboard Report特性的博客(原文戳这里))成文时,没有提到关于中文的问题。之后有朋友反馈,Sampler名称为中文时,生成的报告中展示为乱码,自己测试,确实如此。
如图,脚本包含两个命名为中文的Sampler:
执行测试后,生成的Dashboard Report图表中文乱码:
于是通过查看官方文档和源码,找到原因并进行了解决,原打算直接追加到之前那篇文章,但考虑到篇幅过长,于是决定新成一文,然后在之前的文章中补充链接。
二. 解决方案
先上解决方案:修改JMeter report模块读取数据源码中的字符集设置为UTF-8,编译后替换到 JMETER_HOME\lib\ext\ApacheJMeter_core.jar 内,这里会分享一个我处理好的一个jar包,但建议自己亲自动手:
基础方案
1、在官网 下载页面 下载 apache-jmeter-3.0_src.zip
2、相关源码位置:
apache-jmeter-3.0/src/core/org/apache/jmeter/report/core/CsvSampleReader.java
3、将 CsvSampleReader 的 CHARST 赋值为 UTF-8
private static final String CHARSET = StandardCharsets.UTF_8.displayName();
4、编译该文件,用得到的 .class 文件替换 JMETER_HOME\lib\ext\ApacheJMeter_core.jar 内的原文件。当然也可以直接对源码重新编译打包,但会比较费时。
效果如图: