项目中碰到这样的问题,在eclipse经过utf-8转码的代码,能正常运行,放到了jmeter里面运行,就是乱码,如下:
String s = "乔佳飞"; String ss = null; try { ss = new String(s.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(ss); // TODO Auto-generated method stub
控制台打印:
乔佳飞
但是同样的代码放在jmeter的beanshell中运行,注意,使用log.info方法:
String s = "乔佳飞"; String ss = null; try { ss = new String(s.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } log.info(ss); System.out.println(ss); // TODO Auto-generated method stub
打印的效果是:
使用了各种转码方法,都不能正常输入,后经过各种途径,找到了更改jmeter安装目录bin下面的jmeter.bat文件,jmeter默认使用GBK编码启动,需要自己更改为UTF-8,如下:
在set ARGS 前面一行加上:
set FILEENCODING=-Dfile.encoding=UTF-8
然后在set ARGS最后面加上引用变量:
%FILEENCODING%
最终的效果如下:
重启jmeter,再次运行之前乱码的请求,效果如下:。
2017年11月24日 17:10:23更新:
如果是ant调用的jmeter,需要个更改JMeterTask源码,并将更改后的源码打包进ant-jmeter-1.1.1.jar,放在ant的安装目录里的lib下,
增加的代码是
//设置编码
cmd.createVmArgument().setValue("-Dfile.encoding=UTF-8");