• Jmeter接口测试响应数据中文显示为Unicode码的解决方法


    问题:使用jmeter测试接口,返回响应数据汉字显示为Unicode

    解决结果:

     

     解决过程:
    1.修改jmeter配置文件中的默认编码
    在Jmeter的安装路径下打开bin文件夹下的jmeter.properties文件,搜索关键词default.encoding定位到语句【#sampleresult.default.encoding=ISO-8859-1】。
    将注释#删掉,并改成utf-8编码,如下:

     2.添加后置处理器BeanShellPostProcessor和转码代码
    添加后置处理器BeanShellPostProcessor,在Script中附上转码代码

     转码代码如下:

    1. //获取响应代码Unicode编码的
    2. String s2=new String(prev.getResponseData(),"UTF-8");
    3. //---------------以下步骤为转码过程---------------
    4. char aChar;
    5. int len= s2.length();
    6. StringBuffer outBuffer=new StringBuffer(len);
    7. for(int x =0; x <len;){
    8. aChar= s2.charAt(x++);
    9. if(aChar=='\\'){
    10. aChar= s2.charAt(x++);
    11. if(aChar=='u'){
    12. int value =0;
    13. for(int i=0;i<4;i++){
    14. aChar= s2.charAt(x++);
    15. switch(aChar){
    16. case'0':
    17. case'1':
    18. case'2':
    19. case'3':
    20. case'4':
    21. case'5':
    22. case'6':
    23. case'7':
    24. case'8':
    25. case'9':
    26. value=(value <<4)+aChar-'0';
    27. break;
    28. case'a':
    29. case'b':
    30. case'c':
    31. case'd':
    32. case'e':
    33. case'f':
    34. value=(value <<4)+10+aChar-'a';
    35. break;
    36. case'A':
    37. case'B':
    38. case'C':
    39. case'D':
    40. case'E':
    41. case'F':
    42. value=(value <<4)+10+aChar-'A';
    43. break;
    44. default:
    45. throw new IllegalArgumentException(
    46. "Malformed \\uxxxx encoding.");}}
    47. outBuffer.append((char) value);}else{
    48. if(aChar=='t')
    49. aChar='\t';
    50. else if(aChar=='r')
    51. aChar='\r';
    52. else if(aChar=='n')
    53. aChar='\n';
    54. else if(aChar=='f')
    55. aChar='\f';
    56. outBuffer.append(aChar);}}else
    57. outBuffer.append(aChar);}
    58. prev.setResponseData(outBuffer.toString());

    PS:
    1.原理:通过BeanShell内置变量prev,获得响应数据,经过java程序编码,把Unicode代码转成中文,最后修改查看结果树中响应数据为转换完毕的中文
    2.在性能试前,请把这个后置处理器删除,不然会大量消耗本机的内存和CPU,影响性能的结果

    最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    文档获取方式:

    这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

    以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

  • 相关阅读:
    android下载上拉记载控件com.cjj.materialrefeshlayout:library:1.3.0
    React state(及组件) 的保留与重置
    Flink核心API之Table API和SQL
    golang数据结构与算法——递归、迷宫回溯和二叉树的遍历
    wps/word 如何让表格的标题和表格名称文本(表1-1 xxx)跨页显示(已解决)
    Django 的 settings 全局配置文件
    企业销售额和客户服务有关系吗?
    数据库MySQL----(二)语句
    2022陕西清北录取人数排名,西工大附中遥遥领先,高新一中40人
    Bazel 安装
  • 原文地址:https://blog.csdn.net/yjt2045263063/article/details/132640645