Loadrunner中对中文进行UTF-8转码

由于目前很多服务器采用的都是 UTF-8 编码方式,而Loadrunner脚本中使用的编码方式为GBK,如果直接将中文作为参数传给服务器,则会由于编码不一致导致报错。因此需要对脚本中的中文进行转码。

方法:使用lr_convert_string_encoding函数转码

例如将需要将“张三”作为参数传递,脚本如下:

lr_convert_string_encoding( "张三",       //原参数值

LR_ENC_SYSTEM_LOCALE,              //原编码方式

LR_ENC_UTF8,                                //目标编码方式

"zs" );                                            //编码转换后的参数值

转码完成后,就可以使用 {zs} 将“张三”传给服务器了。

但是!

当我以为这样就万事大吉的时候,被Loadrunner当头一棒打得有点蒙:转换编码以后的字符串最后一定会带有 \x00 这几个字符。这样显然会导致传值不正确。

经过几番折腾确认这是Loadrunner的一个问题,不管是Loadrunner9.5还是比较新的Loadrunner11都会有这个问题。查看Loadrunner中关于lr_convert_string_encoding函数说明中标红的说明:The function saves the result string, including its terminating NULL, in the parameterparamName。也就是说,当转换编码为UTF-8之后,如果直接作为变量传值的话,在最后的字符串之中,会多出来一个“NULL”,在C语言中NULL是一个字符串的结束,而正是这个NULL字节的存在导致出错。

为了解决这个问题不得已又学了一招,脚本如下:

char tmp1[50];                    //注意:Loadrunner中定义变量要在脚本最开始

strcpy(tmp1,lr_eval_string("{zs}"));        //将zs的值取出并拷贝给tmp1,前提是要在脚本最初定义好tmp1,即 char tmp1[50]

lr_log_message("str is %s",tmp1);         //在回放日志中打印tmp1的值以便查看、非必要

lr_save_string(tmp1,"tmp2");                //将tmp1的值传给tmp2

这段脚本是利用lr_eval_string函数取参数值时会自动去掉\x00。这样处理过后传值给服务器的时候就要使用{tmp2},而不再是{zs}。经过测试,结果正确。

时间: 2025-01-17 22:45:37

Loadrunner中对中文进行UTF-8转码的相关文章

Loadrunner中对中文进行UTF-8转码的探索

上一篇 / 下一篇  2010-02-22 15:20:28 查看( 2378 ) / 评论( 2 ) / 评分( 5 / 0 ) 这是一个HTTP接口测试中经常会碰到的问题,目前的服务器采用的都是UTF-8编码方式,而我们的客户机Windows系统一般默认采用的编码方式是GBK,这正是我们采用录制方式的时候会发现许多中文乱码的原因. Loadrunner录 制的时候可以通过在Virtual User Gen的Tools->Recoding Options -> Advanced ->

js中post中文参数转码和解码

作为基础知识和血淋林的教训,前端一定要记得post请求时将参数中带有中文的部分进行转码!! var str='宋宇·特弱夫斯基'; //转码: encodeURI(encodeURI(str)) ; =>"%25E5%25AE%258B%25E5%25AE%2587%25C2%25B7%25E7%2589%25B9%25E5%25BC%25B1%25E5%25A4%25AB%25E6%2596%25AF%25E5%259F%25BA" //解码: decodeURICompone

loadrunner 脚本和replaylog中的中文乱码问题(转载)

解决这个问题必须认识到一个事实就是,loadrunner和测试服务器交换数据使用的是utf8格式,但是展现在replaylog中是使用gb2312格式,而且在脚本中如何使用web_reg_find的时候也是使用的是gb2312格式,所以知道这个原理后,事情就好办多了. 首先使用关联函数web_reg_save_param将服务器返回的Server Response 内容保存为参数,接着利用 lr_convert_string_encoding函数进行编码格式转换即可. 此时注意---关联函数是一

解决loadrunner 脚本和replaylog中的中文乱码问题

解决loadrunner 脚本和replaylog中的中文乱码问题 解决这个问题必须认识到一个事实就是,loadrunner和测试服务器交换数据使用的是utf8格式,但是展现在replaylog中是使用gb2312格式,而且在脚本中如何使用web_reg_find的时候也是使用的是gb2312格式,所以知道这个原理后,事情就好办多了. 1.获取测试服务器提供的utf8格式的文字并且转换成gb2312格式展现出来 web_reg_save_param_ex( "ParamName=aa"

jsp中pageEncoding、charset=UTF -8

jsp中pageEncoding.charset=UTF -8" 在JSP/Servlet  中主要有以下几个地方可以设置编码,pageEncoding="UTF-8".contentType="text/html;charset=UTF  -8".request.setCharacterEncoding("UTF-8")和response.setCharacterEncoding  ("UTF-8"),其中前两个只

处理get中的中文乱码情况

1 最基本的乱码问题.这个乱码问题是最简单的乱码问题.一般新会出现.就是页面编码不一致导致的乱码.<%@ page language="java" pageEncoding="UTF-8"%><%@ page contentType="text/html;charset=iso8859-1"%><html><head><title>中文问题</title><meta h

LoadRunner中的Web 函数列表

web test LoadRunner fuction_list D:\Program Files (x86)\Mercury Interactive\Mercury LoadRunner\bin>ls -l *.chm -rw-rw-rw-   1 user     group       25893 May 20  2004 FuncRef.chm -rw-rw-rw-   1 user     group       29443 May 20  2004 RPM_Configuration

解决jsp中的中文乱码问题笔记

一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供大家参考. 一.JSP页面显示乱码 下面的显示页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title> <meta http-equiv="Content-Type" con

PHP中的中文截取乱码问题_gb2312_utf-8

一.字符串编码为gb2312,一个中文占俩字节 ? public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度         $strlen = $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度         for($i = $start; $i < $strlen;) {