如何解决java协议的loadrunner脚本返回字符串乱码问题

在编写java协议的loadrunner脚本时,服务器偶尔会返回部分中文字符,这部分字符在日志中直接打印时显示的是乱码,需要进行转义才行。原因是实际返回的字符时UTF-8格式,但是loadrunner中使用的是GB2312格式,使用String的构造函数 String(byte b[],"encoding")进行两次转码即可。

下面是代码:

     web.reg_save_param("msg", new String[]{ "NOTFOUND=ERROR",
                    "LB=msg\":\"", "RB=\",\"data", "LAST" });
            autoAddHeader();
            web.url("index",
            "url=" + host
            + "/index?token=<token>&doctorId=<doctorId>",
            new String[] { "TargetFrame=", "Resource=0",
                "RecContentType=application/json", "Snapshot=t1.inf",
                "Mode=HTML", "LAST" });
            String message =new String(lr.eval_string("<msg>").getBytes(),"UTF-8");//先转义成UTF-8编码
            String gb2312 = new String(message.getBytes("GB2312"));//获得GB2312格式的编码字符
            lr.output_message(gb2312);

注意这里需要进行两次转义,一次转义无法搞定,坑了多次才解决。

时间: 2024-10-27 13:05:08

如何解决java协议的loadrunner脚本返回字符串乱码问题的相关文章

【原创】解决untiy使用c++dll过程中, 字符串乱码的问题.

环境:  1. c++ dll  <--> c# dll <--> unity 2. c++, c# 文件编码都为 UTF8 3. c++ dll return 多字节字符串. 问题: 1. 从c++接收到的字符串,在unity编辑器中可以正常显示. 2. 而发布工程中显示乱码. Log文件中也显示乱码.(Log文件也为UTF8格式) 分析: 1. 是否字符串封送问题. c++ api SSKJ_API const char* SSKJ_GetAudioDevice(void* p

解决MVC 中httpstatuscoderesult 通过StatusDescription 返回中文乱码

c#中httpstatuscoderesult语法如下: public HttpStatusCodeResult( HttpStatusCode statusCode, string statusDescription ) 在Action中通过 return new HttpStatusCodeResult(HttpStatusCode.BadRequest,"我是中文字符串") 在前端返回的是乱码. 原因: 根据 http 协议,StatusDescription 是写在 http

解决使用crontab执行shell脚本时出现乱码情况

自己编写了一个shell脚本来维护测试环境,使用了crontab调度让其定时执行,结果遇到了乱码问题,脚本在shell环境下直接运行没有问 题. 结论是crontab执行时不会携带用户的环境变量,缺失一些系统变量,碰到中文就乱码.需要在脚本里额外添加缺失的环境变量,针对中文问题,需要声明 LANG参数 在脚本开头增加:LANG="en_US.UTF-8"export LANG 设置的编码要和系统设置的一致,具体可以到/etc/sysconfig/i18n 查看对应的环境变量.

解决Java POI 导出Excel时文件名中文乱码,兼容浏览器

String agent = request.getHeader("USER-AGENT").toLowerCase();   response.setContentType("application/vnd.ms-excel");   String fileName = "文件名";   String codedFileName = java.net.URLEncoder.encode(fileName, "UTF-8");

解决php使用json_encode在前端返回字符串的问题

$.post('?',{user:user,passwd:passwd},function(e){}) 解决方法$.post添加第四个参数 $.post('?',{user:user,passwd:passwd},function(e){},'json') 原文地址:https://www.cnblogs.com/wangdeguao/p/9109148.html

使用@ResponseBody注解返回字符串乱码

方法一.在注解@RequestMapping 中添加 produces = {"application/json;charset=UTF-8"} 方法二.在配置文件中添加: <mvc:annotation-driven> <!-- 解决返回String时乱码 --> <mvc:message-converters register-defaults="true"> <bean class="org.springfr

springmvc使用@responsebody返回字符串乱码问题

SpringMVC的@ResponseBody注解可以将请求方法返回的对象直接转换成JSON对象,但是当返回值是String的时候,中文会乱码. 原因是因为其中字符串转换和对象转换用的是两个转换器,而String的转换器中固定了转换编码为"ISO-8859-1". 解决: 方法1.加上这个@RequestMapping(value="/login.action",method=RequestMethod.POST,produces={"applicatio

Loadrunner脚本回放 场景运行过程中常见错误分析

问题一:Loadrunner超时错误问题描述 Loadrunner超时错误:在录制Web协议脚本回放时超时情况经常出现,产生错误的原因也有很多,解决的方法也不同. 问题现象Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s). 错误分析对于HTTP协议,默认的超时时间是120秒(可以在LoadRunner中修改),客户端发送一个请求到服务器端,如果超过120秒服

LoadRunner JAVA Vuser协议手工写脚本Failed to find Classes.zip entry in Classpath问题 .

JAVA Vuser协议手工写脚本Failed to find Classes.zip entry in Classpath问题解决方法: 前提条件: 环境变量:正确的配置了JAVA_HOME,path正确的指明了JAVA_HOME的bin路径和LR的bin路径,classpath中指明了jdk的lib路径和LR的lib路径. 当前LoadRunner的版本是9.0版. 当前的JDK版本是1.7. 一.错误内容如下: 通知: Found jdk version: 1.7.0. [MsgId: M