jmeter乱码request请求体乱码
故事背景
飞测群里有同学,又提了一个乱码的问题—request请求提的乱码。各种配置修改,都不能解决。乱码现象如下图:
解决思路
1、修改本地配置文件
因为此处的数据,还没有发送出去,所以,肯定是这个变量的编码和jmeter内部的一些编码不一致导致。然后,尝试修改jmeter.properties的配置项:
`sampleresult.default.encoding=utf-8`
重启jmeter后,依然还是乱码。
2、修改消息头和请求体编码
同时把消息头和请求体的编码修改为utf-8,结果依然不生效。
3、查看jmeter源码
<1>因为是request请求体的内容,所有先在下面的包中进行查看:
org.apache.jmeter.visualizers
然后看到一个java的接口文件:
RequestView.java
<2>这个接口中有一个下面的方法:
JPanel getPanel();
通过eclipse,找到实现这个接口的函数(右键->Quick Type Hierarchy查找)。搜索到如下2个文件:
RequestViewRaw.java
RequestViewHTTP.java
<3>因为乱码是在http视图先出现的,Raw并没有出现,所以推测应该在RequestViewHTTP.java文件中可以找到线索。大致阅读了下源码,找到如下内容:
public static String decodeQuery(String query) {if (query != null && query.length() > 0) {try {query = URLDecoder.decode(query, CHARSET_DECODE); // better ISO-8859-1 than UTF-8} catch(IllegalArgumentException e) {log.warn("Error decoding query, maybe your request parameters should be encoded:" + query, e);return null;} catch (UnsupportedEncodingException uee) {log.warn("Error decoding query, maybe your request parameters should be encoded:" + query, uee);return null;} return query;}return null;}
其中下面一句是关键:
query = URLDecoder.decode(query, CHARSET_DECODE); // better ISO-8859-1 than UTF-8
对请求体的内容进行了url编码。于是,检查常量CHARSET_DECODE的值。如下:
private static final String CHARSET_DECODE = "ISO-8859-1"; //$NON-NLS-1$
因为之前的尝试步骤中,把所有的配置都修改为了UTF-8,那么,是不是因为这个地方的编码为ISO-8859-1,不一致,所致?尝试修改配置如下:
private static final String CHARSET_DECODE = "UTF-8"; //$NON-NLS-1$
重新编译。执行jmeter。成功!截图如下:
发散一下
为什么jmeter的开发人员留下如此的注释:
better ISO-8859-1 than UTF-8 (好奇)
搜索后的理解:
1、ISO-8859-1(Latin-1),单字节编码,是一种8位字符集,占位少。
2、ISO-8859-1能够满足所有的欧洲语言(开发者是个用欧洲语言的人呗)。
那UTF-8是什么呢:
1、亚洲和非洲语言并不能被8位字符集所支持,只有用2个字节,才可以编码地球上几乎所有地区的文字,因此,创建了UNICODE编码。
2、UNICODE比ASCII占用大一倍的空间,而对ASCII来说高字节的0对他毫无用处,应运而生了新的编码形式–UTF(Unicode Transformation Format)
3、UTF-8:每次8个位传输数据,它是一种变长的编码方式。当字符在ASCII 码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中 文字符占3个字节。(此点,不是很清楚)
jmeter乱码request请求体乱码相关推荐
- Spring拦截器获取request请求体中的json数据,并转换成Java对象的解决办法
1.要被拦截的Controller接口 我们需要一个更新用户信息接口,请求方式为POST,参数类型为对象类型(UserInfo),代码如下: @Resource private UserService ...
- 微信小程序系列-wx.request 请求中文乱码问题
method: "post",header: {'content-type': 'application/x-www-form-urlencoded;charset=utf-8', ...
- jmeter对乱码如何处理_JMeter中文乱码的解决
对于JMeter中文乱码分为两部分: 1.请求(request):由于引用了csv文件当csv文件编码与JMeter不统一可能造成服务器收到数据的中文乱码 2.返回(response):由于服务器返回 ...
- Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题)
Request(请求继承体系,获取请求行,请求头,请求体和通用的获取请求数据和解决乱码问题) 1.Request(请求) Request继承体系 要想了解RequestFacade中都提供了哪些方法, ...
- 解决为什么已经设置了request.setCharacterEncoding(“utf-8“);POST请求仍然乱码的问题
解决为什么已经设置了request.setCharacterEncoding("utf-8");POST请求仍然乱码的问题 参考文章: (1)解决为什么已经设置了request.s ...
- 返回结果乱码_Spring请求参数和响应结果全局加密和解密(1)
阅读文本大概需要25分钟. 前提 前段时间在做一个对外的网关项目,涉及到加密和解密模块,这里详细分析解决方案和适用的场景.为了模拟真实的交互场景,先定制一下整个交互流程.第三方传输(包括请求和响应)数 ...
- 解决Post请求中文乱码问题
Web应用的中文乱码由来 1.Tomcat默认使用字符集ISO-8859-1,属于西欧字体集 2.解决乱码的核心思路是将ISO-8859-1转换为UTF-8 3.Servlet中求请与响应都需要设置U ...
- postman 返回json乱码_POSTMAN发起请求收到乱码 http 406错误
web前段异常: The resource identified by this request is only capable of generating responses with charac ...
- java get post乱码处理_JavaWeb 之 GET请求和POST请求的乱码问题
一.乱码的原因 乱码:当编码与解码不一致时,就会出现乱码的情况.(本质:编解码不一致) 根据乱码又可分为: (1)请求乱码:客户端编码与服务器解码不一致 (2)响应乱码:服务器编码与客户端解码不一致 ...
最新文章
- python拆分excel的sheet为单文件_python拆分Excel表格并发送邮件
- 从15000个Python开源项目中精选的Top30,Github平均star为3707,赶紧收藏!
- Lock wait timeout exceeded; try restarting......
- Java并发编程:深入剖析ThreadLocal
- 浏览器html5/css3兼容性检测的javascript类库 - Modernizr简单介绍
- 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用...
- hiernate的锁机制
- 【C语言进阶深度学习记录】二十五 指针与数组的本质分析二
- mysql数据库访问编程,mysql 连接数据库
- Android Shape工具 Duck
- 本体学习的概念及目标
- Python爬虫编程实践 Task02
- 如何实现不同vlan,不同网关的终端间的通信
- hdu 5919 主席树保留区间数的种类数目
- Oracle安装基本步骤
- 搞深度学习框架的那帮人,不是疯子,就是骗子
- 系统集成项目管理工程师(中级)考试心得经验
- 【JAVA】根据汉字拼音首字母排序 不同类型处理
- NC 一些常用方法总结
- xml根据属性去重。如csprj去重