• JMeter:全面的乱码解决方案


    中文乱码一直都是比较让人棘手的问题,我们在使用Jmeter的过程中,也会遇到中文乱码问题

    接口:http://127.0.0.1:8090/test 这个接口有一个参数name,返回结果就是你传的name,该接口既可以用get请求也可以用post请求。

    当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding设置的格式解析

    默认ISO-8859-1,解析中文肯定出错

     
    1. # The encoding to be used if none is provided (default ISO-8859-1)  
    2. #sampleresult.default.encoding=ISO-8859-1  


    例子:某请求响应数据编码为UTF-8,通过“查看结果树”看到响应数据为乱码;

    方案一:直接修改sampleresult.default.encoding=UTF-8。(记住去掉#,不要还是注释状态哦)

    方案二:动态修改(这种方法方便些,蜗牛推荐)

       step1:指定请求节点下,新建后置控制器"BeanShell PostProcessor"

       step2:其脚本框中输入:prev.setDataEncoding("UTF-8");

       step3:保存

    下面是详细研究过程

     

    添加HTTP请求时在Content encoding后填入相应的编码

     

    接下来我们来看一下这种方式,可以解决哪些乱码问题:

    01      get请求中,参数有中文,我们先不填入任何编码,看下结果会是怎样

     

    我们发现中文没有乱码,经过我的测试get请求时Content encoding中填入任何编码或者不填都没有影响,因为都不会乱码。

    02

    post请求中参数有中文

     

    第一次我们也先不填写编码:

     

    我们发现参数出现了乱码,那么接下来我们制定一下编码:

     

    我们发现不乱码了,那么经过测试此处只要填写时可以显示中文的编码,这个地方就不会乱码,但是我们不要忽略了后台程序的编码,

    如果后台程序使用的编码和你传入的编码不一致,那么会造成后台程序在接收参数时乱码,此处我将参数直接返回回来,这样我们可以直观的看一下效果。

    那么我的后台程序的编码为utf-8,我们分别来看一下设置GBK和utf-8这两种方式的结果,如下图所示:

     

    03

    对返回结果的影响

     

    我们请求一下百度,先不填编码:

    我们看一下返回数据,有乱码:

    那我们在填写utf-8编码看一下:

     

    我们发现还是乱码,经过测试写啥编码返回结果都是乱码,所以我们可以得到结论Content encoding并不能影响返回结果。

    02

    添加BeanShell Sampler或者BeanShell PostProcessor

     

    这种方式主要解决响应乱码问题的,我们以BeanShell Sampler为例讲解。

    我们先不添加BeanShell Sampler,看看结果如何:

    我们看到现在是乱码,接下来我们添加一下BeanShell Sampler在来看一下,注意要在HTTP请求后面添加:

    在Script处填写如下代码:prev.setDataEncoding("utf-8");

    我们看一下结果:

    我们发现乱码好了!!!

    总结一下这种方法的优点:灵活,随时修改,重点是不需要重启启动Jmeter。

    03

    修改Jmeter的配置文件:jmeter.properties

     

    这种方式经过我的测试,只是对响应结果有效果。

    找到jmeter安装目录下bin目录下的jmeter.properties文件。

    然后搜索encoding,找到如下这一行代码:

    然后把前面的#去掉,后面的编码修改成utf-8,如下图:

    然后重启Jmeter。

    接下来我们访问一下百度看一下效果,我把BeanShell Sampler禁用。

    我们发现没有乱码。

    我们总结一下这种方式的优点:一次修改,长久使用。

    04

    有的地方说可以通过添加HTTP信息管理器这种方式修改编码

     

    在HTTP信息头管理器中添加"Content-Type": "application/json;charset=utf-8"或者"Content-Type":"application/x-www-form-urlencoded;charset=utf-8"来进行修改编码。

    首先这种方式只能影响请求的参数,但是经过我的测试无论添加哪种都不起作用,在Jmeter中这个地方只能指定你的参数以哪种形式传递,是Json还是KV形式,对于编码没有作用,在这里我就不给大家进行演示了,大家可以自己进行测试。

    05

    最后来一种最牛逼的方式解决你的乱码

     

           最后来一中最牛逼的方式,如果以上方式都没有解决你的乱码,那么我们只能去修改Jmeter的源码来解决了,因为jmeter源码字符集不是采用的ISO,这里我们就不做介绍了,感兴趣的同学可以自己尝试一下,这里我已经修改了jmeter源码,并重新打包,复制到jmeter的安装目录下的lib/ext下,然后进行替换即可。

  • 相关阅读:
    学习
    素数环
    数独
    nyoj迷宫寻宝(一)
    Django H1 高级教程:如何编写可重用的应用
    Django L6 编写你的第一个Django应用
    Django L5 编写你的第一个Django应用
    Django L4 编写你的第一个Django应用
    Django L3 编写你的第一个Django应用
    Django L2 编写你的第一个Django应用
  • 原文地址:https://www.cnblogs.com/klb561/p/10183559.html
Copyright © 2020-2023  润新知