问题描述:HTTP请求的数据中包含中文,在beanshell前置处理器中对请求报文进行加密加签后再发送服务,从服务器的日志中看到中文显示乱码。
JMeter版本为5.2.1
网上资料说Jmeter启动时以gbk编码启动的。所以要更改为UTF-8
jmeter安装目录的bin下找到jmeter.bat
在ARGS前添加 set FILEENCODING=-Dfile.encoding=UTF-8,在set ARGS= 后添加 %FILEENCODING% 保存,并重启jmeter.
按照此种方式设置后,问题并没有解决,使用低版本的JMeter(3.0),按照此方法修改,问题得到解决。
于是分析JMeter5.2版本修改配置无效的问题
方式一:
先设置FILEENCODING 变量的值,再添加到ARGS变量后面,通过两个echo输出查看参数设置的值是否如预期,再执行JMeter脚本,发现后台中文解析正常,问题解决。
if not defined FILEENCODING (
set FILEENCODING=-Dfile.encoding=UTF-8
)
echo set FILEENCODING = %FILEENCODING%
rem Collect the settings defined above
if not defined JMETER_COMPLETE_ARGS (
set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %FILEENCODING%
) else (
set ARGS=
)
echo set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %FILEENCODING%
方式二:
按照网上写法,直接在ARGS签名set FILEENCODING参数,echo输出,看到参数值也被修改了,但是执行JMeter脚本,后台解析中文还是乱码。问题原因目前不清楚,有明白的大佬请留言指导,谢谢!
rem Collect the settings defined above
if not defined JMETER_COMPLETE_ARGS (
set FILEENCODING=-Dfile.encoding=UTF-8
set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %FILEENCODING%
) else (
set ARGS=
)
echo set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% %FILEENCODING%
备注:调试完后,echo可以去掉或者使用rem替换echo