• LoadRunner中文乱码问题解决方法


    前段时间在录制,增强,整合LoadRunner脚本,期间两次遇到了中文乱码问题。在此记录一下中文乱码问题的解决办法。
      一、录制回放中文乱码
      我录制登陆的脚本,用户名中出现中文,回放的时候总是提示登陆失败。如下图:
      
    图1 LR回放中文乱码
      解决中文乱码可以在录制的时候在Virtual User Gen的 Tools->Recoding Options -> Advanced -> Support charset -> UTF-8。重新录制后中文乱码问题得到解决。
      二、整合脚本中文乱码
      录制增强(参数化,关联,检查点,事务)脚本后决定将几个脚本整合在一起。于是新建了一个空的脚本,将登陆退出公用操作分别放在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:转换后的目标字符串。
      实践一
      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的存在导致了脚本回放失败。
      实践二
    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的影响,测试结果正常
  • 相关阅读:
    当···时发生了什么?
    数据存储-3、数据库分库分表思路
    数据存储-2、反模式设计
    数据存储-1、MySQL 索引使用的注意事项
    锁机制-4、synchronized 与 lock 的区别
    锁机制-3、synchronize 实现原理
    锁机制-1、乐观锁与悲观锁以及乐观锁的一种实现方式
    线程-11、线程的生命周期
    线程-10、线程池的几种方式
    线程-9、线程池的实现原理
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4485154.html
Copyright © 2020-2023  润新知