Jmeter之响应结果乱码解决
场景:
在测试过程中,我们可能需要查看结果树,但是发现里面的响应数据在“Document”以外的其他表现形式下都有乱码,如下图就是设置了以Text的形式展示,响应数据包含乱码:
分析:原因是Jmeter的结果处理编码与被测试对象的编码不一致;
1、Jmeter的sampler请求结果的默认编码方式为:ISO-8859-1(不支持中文);
2、被测对象的结果编码可能是gbk、UTF-8;
解决方法:
1、使用后置控制器"BeanShell PostProcessor"来动态修改结果处理编码,使之与被测对象保持一致;
优点:灵活,随时修改;
缺点:要根据不同的对象设置不同的编码,
适用范围:测试不同的公司项目,有些公司喜欢GBK,有些事UTF-8;
2、修改Jmeter的默认编码;
优点:一次修改,长久使用;
缺点:如果要测试不同的公司项目,需要多次修改,较麻烦;
使用范围:测试本公司的项目,毕竟同一个公司的项目基本上都是使用同一个编码的;
那么就很明确了,大家可以根据自己的需要来设置;
下面说明两个方法的操作步骤;
1、使用后置控制器"BeanShell PostProcessor"
(1)确定返回结果的编码(可跟开发人员确认,如果是web页面,可查看源文件得知),如;
(2)右键httpSampler,添加“BeanShell PostProcessor”元件;
(3)设置“BeanShell PostProcessor”;
在“Script”中增加“prev.setDataEncoding("UTF-8");”
(4)验证是否解决,如下图,已成功处理;
2、修改Jmeter的默认编码
(1)进入%JmeterHome%/bin,找到Jmeter.properties,并打开;
(2)搜索“sampleresult”,找到sampler的编码设置代码;
(3)修改编码为“UTF-8”,去掉“#”(注释符号),保存设置,并重启Jmeter;
(4)验证是否解决,如下图(无BeanShell PostProcessor),已成功处理;
延伸:
1、向服务器发送的post请求中存在乱码(一般是中文)时,
可在请求中设置content-encoding,如UTF-8;
2、“BeanShell PostProcessor”一定要设置在http请求中么?
答:不是,后置处理器在监听器之前处理(如不知道元件的作用域与执行顺序请自行Google,我后面有时间再整理一份),所以只要在作用域内,后置处理器放哪里都是同样的效果;
如下图:
转自:http://blog.51cto.com/ydhome/1864340
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2018-01-04 css部分复习整理
2018-01-04 秘钥登录服务器执行shell脚本