解决jemeter做接口测试时响应数据中文显示为乱码或者Unicode码的问题
来源:互联网 发布:大狗狗影视下载软件 编辑:程序博客网 时间:2024/06/05 20:13
前几天学习jemeter做简单的接口测试时,出现了一个问题,问题是请求成功后返回的响应数据中文显示为了Unicode码
如下图:
最先开始还以为是乱码,所以百度出了一片博客http://blog.sina.com.cn/s/blog_6b0e39450102wlym.html
后来跟据博客的内容修改
但是根据这个修改之后发现仍然不行,后来对比postman看了下,postman返回的也是这种,只是postman有一个json格式化的小工具,可以转换成下面这种:
原因找到了,就看解决办法,所以就找到了http://www.cnblogs.com/wuyonghuan/p/7273917.html
文中说了在对应请求上添加后置处理器BeanShellPostProcessor添加完成后如下图
在Script下面添加代码为:
//获取响应代码Unicode编码的
String s2=new String(prev.getResponseData(),"UTF-8");
//---------------一下步骤为转码过程---------------
char aChar;
int len= s2.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s2.charAt(x++);
if(aChar=='\\'){
aChar= s2.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s2.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);}}else
outBuffer.append(aChar);}
//-----------------以上内容为转码过程---------------------------
//将转成中文的响应结果在查看结果树中显示
prev.setResponseData(outBuffer.toString());
然后再次运行就OK了,如下图
String s2=new String(prev.getResponseData(),"UTF-8");
//---------------一下步骤为转码过程---------------
char aChar;
int len= s2.length();
StringBuffer outBuffer=new StringBuffer(len);
for(int x =0; x <len;){
aChar= s2.charAt(x++);
if(aChar=='\\'){
aChar= s2.charAt(x++);
if(aChar=='u'){
int value =0;
for(int i=0;i<4;i++){
aChar= s2.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);}}else
outBuffer.append(aChar);}
//-----------------以上内容为转码过程---------------------------
//将转成中文的响应结果在查看结果树中显示
prev.setResponseData(outBuffer.toString());
然后再次运行就OK了,如下图
但是上诉文中说了这也不是一劳永逸的办法,具体一劳永逸的办法待研究。
阅读全文
0 0
- 解决jemeter做接口测试时响应数据中文显示为乱码或者Unicode码的问题
- 解决json接口数据中文显示为null的问题
- 总结解决中文数据库乱码或者页面显示乱码问题
- 解决MyEclipse编写properties文件时,中文注释显示为Unicode码问题
- jemeter 创建请求-解决json乱码问题
- 解决文本数据请求后显示乱码,或者输出为空 数据转码
- mysql不能显示中文或者为乱码的解决办法
- 解决Toad的中文显示乱码问题
- 解决Xshell显示中文乱码的问题
- 解决 HTMLTestRunner 中文显示乱码的问题
- 解决Xshell显示中文乱码的问题
- 解决Xshell显示中文乱码的问题
- 解决Xshell显示中文乱码的问题
- 解决Xshell显示中文乱码的问题
- 解决Xshell显示中文乱码的问题
- 解决中文文件名显示乱码的问题
- 解决Xshell显示中文乱码的问题
- 解决mysql显示中文乱码的问题
- 热插拔与非热插拔的区别
- hdu1232畅通工程(并查集裸题)
- android开发进阶图谱
- 数据提取(2):pandas库入门
- PAT 1052. Linked List Sorting (25)
- 解决jemeter做接口测试时响应数据中文显示为乱码或者Unicode码的问题
- c语言文件操作函数
- USB转串口,以及RS232串口直接相连
- *** glibc detected *** free(): invalid pointer:解决方法
- webpack
- Retorfit2.0+Rxjava1+Okhttp3实现soap协议的Webservice
- 成为Java高级架构师必看的15本书
- vs2010 快捷键大全
- 【PythonDjango后台实例 第五章】Bootstrap3 在HTML页面中显示调用本地时间并动态显示