LoadRunner中文乱码问题解决方法

录制增强(参数化,关联,检查点,事务)脚本后决定将几个脚本整合在一起。于是新建了一个的脚本,将登陆退出公用操作分别放在vuser_init和vuser_end中,其他操作放在各自的Action中。整理完成回放后又出现中文乱码。为解决这个问题,最关键的是要把本地GBK编码的汉字转换成UTF-8编码格式的信息,为此我们引进loadrunner自带的编码函数lr_convert_string_encoding。

int lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);
该函数有4个参数,含义如下:

sourceString:被转换的源字符串。

fromEncoding:转换前的字符编码。

toEncoding:要转换成为的字符编码。

paramName:转换后的目标字符串。

实践一:

1
2
3
4
5
6
7
lr_convert_string_encoding( "登陆账号" ,LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8, "Account" );
 
web_submit_data( "login.quick" ,
  ……
"Name=account" , "Value={Account}" ,ENDITEM,
……
LAST);

回放脚本的时候依然报错。查看lr_convert_string_encoding的解释,它会在其转换的字符串末尾加上\x00。在C语言中\X00是一个字符串的结束,而正是这个\x00的存在导致了脚本回放失败。

实践二:

1
2
3
4
5
6
7
8
9
10
11
char tmp[100];
 
lr_convert_string_encoding( "登陆账号" ,LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8, "Account" );
strcpy (tmp,lr_eval_string( "{Account}" ));
lr_save_string(tmp, "Account" );
 
web_submit_data( "login.quick" ,
……
"Name=account" , "Value={Account}" ,ENDITEM,
……
LAST);

通过strcpy和lr_save_string的处理屏蔽\x00的影响,测试结果正常

猜你喜欢

转载自blog.csdn.net/nielinqi520/article/details/79472654