項目中碰到這樣的問題,在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");