当前位置: 首页 > news >正文

【性能测试】jmeter测试时查看结果树返回结果中文显示问题

问题是什么

在日常jmeter测试过程中,初学者可能会遇到最多的一个问题就是中文乱码,比如下面这个案列

整体请求过程正常,但是返回结果在中文显示的有点问题

分析问题

出现这个问题的原因,最容易想到的就是编码问题,在jmeter里面,有如下两种情况导致:

  • jmeter工具配置的问题
  • 接口本身的问题
  1. jmeter工具配置的问题

JMeter 默认的字符编码可能与你的系统或被测试应用的字符编码不一致,这会导致显示乱码

  1. 接口本身的问题

服务器端可能没有正确地设置响应头中的 Content-Type 字段,或者其值与实际的编码不一致。例如,服务器可能发送了 UTF-8 编码的数据,但是 Content-Type 头部却指示了不同的编码,如 ISO-8859-1。

如何解决问题

jmeter工具配置的问题解决

1.在 HTTP 请求中设置字符集:
你可以直接在 HTTP 请求采样器的“HTTP Request”面板中设置 Content Encoding。通常情况下,将编码设置为 UTF-8 应该可以解决大部分的中文乱码问题。

2.在 HTTP 消息头部设置 Content-Type:
这个方法是告诉服务器你期望接收的数据类型和字符编码。在“HTTP Header Manager”中添加一个 header,键为 Content-Type,值设为 application/json;charset=UTF-8 或者 application/xml;charset=UTF-8,具体取决于你接收的是 JSON 还是 XML 格式的数据。

3.修改 jmeter.properties 文件:
这个方法是在全局层面上设置 JMeter 处理响应数据时默认使用的编码。你需要找到 JMeter 安装目录下的 bin 文件夹中的 jmeter.properties 文件,然后修改 sampleresult.default.encoding 属性,将其值设置为 UTF-8。这会影响到所有使用 JMeter 的测试,而不仅仅是特定的 HTTP 请求。

sampleresult.default.encoding=UTF-8
接口本身的问题解决

通常来说,jmeter工具配置解决的方法应该足以解决问题,因为它们直接作用于具体的请求上。

通过代码去转换接口返回的结果,下面是一个简单的unicode编码转为正常汉字:

String s=new String(prev.getResponseData(),"UTF-8");
char aChar;
int len= s.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){aChar= s.charAt(x++);if(aChar=='\\'){aChar= s.charAt(x++);if(aChar=='u'){int value =0;for(int i=0;i<4;i++){aChar= s.charAt(x++);switch(aChar){case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':value=(value <<4)+aChar-'0';break;case'a':case'b':case'c':case'd':case'e':case'f':value=(value <<4)+10+aChar-'a';break;case'A':case'B':case'C':case'D':case'E':case'F':value=(value <<4)+10+aChar-'A';break;default:throw new IllegalArgumentException("Malformed   \\uxxxx  encoding.");}}outBuffer.append((char) value);}else{if(aChar=='t')aChar='\t';else if(aChar=='r')aChar='\r';else if(aChar=='n')aChar='\n';else if(aChar=='f')aChar='\f';outBuffer.append(aChar);}}elseoutBuffer.append(aChar);}
prev.setResponseData(outBuffer.toString());

通过如上的转换后,请求结果页显示正确了。

如果你发现某个特定的请求还是存在问题,那么检查服务器端返回的实际编码是否与你设置的编码一致也很重要。有时候,服务器可能没有正确地设置响应头中的编码信息,这时你可能需要与后端开发人员沟通,确保他们正确设置了响应的编码。

文章原创首发于微信公众号 软件测试微课堂,更多内容欢迎关注微信公众号查看


http://www.mrgr.cn/news/41669.html

相关文章:

  • 【递归】12. leetcode 1448 统计二叉树中好节点的数目
  • 西安做网站如何打造出色的企业网站
  • 【AIGC】AI时代的数据安全:使用ChatGPT时的自查要点
  • Crawl4AI - LLM 友好的异步爬虫工具
  • python之输入输出
  • ISA-95制造业中企业和控制系统的集成的国际标准-(5)
  • Spring Boot 和 MyBatis-Plus凑一块儿了,这份教程你得看
  • OpenAI 开发者大会2024
  • 基于Python的人工智能应用案例系列(18):SpaCy简历信息抽取
  • Java 中的 PO、VO、DAO、BO、DTO、POJO
  • FTP应用篇:低功耗4G模组Air780EP AT开发
  • 你了解最快的锁机制吗?——看完你就懂了!
  • AI学习指南深度学习篇-权重正则化的实现机制
  • 【技术详解】SpringMVC框架全面解析:从入门到精通(SpringMVC)
  • Spring BeanUtils.copyProperties实现机制
  • 低功耗4G模组Air780E之串口通信篇
  • AI学习指南深度学习篇-权重正则化在深度学习中的应用
  • 用Python实现运筹学——Day 10: 线性规划的计算机求解
  • 解锁PDF阅读器的神奇功能与应用场景
  • CSS3动画