LoadRunner脚本中的乱码问题以及解决办法

来源:互联网 发布:网络电视如何看翡翠台 编辑:程序博客网 时间:2024/05/22 00:28
v

LoadRunner脚本中的乱码问题以及解决办法

      不少人在使用LoadRunner的过程中都遇到过这样的问题:在录制下来的脚本的中文信息出现了乱码。关于乱码问题,可能大家在网上也能搜到不少相关的解决办法,我在这里就不多说了,这里只举一个实际例子来说明这个问题,也许不是解决这个问题的唯一办法,但至少也是其中的一种。
    被测系统采用Ajax技术,通过录制下来的脚本看起来像下面的样子(省略函数其它部分,下同):
    web_custom_request("CALL-H001I",
        "EncType=text/xml; charset=UTF-8",
        "BodyBinary=CALLH001I1040浣忔埧01
鏆傛棤鍙风爜1
11000000
1000000.00A110102641122043#1闇嶈景榫"
"""x99"
        "10001鍘﹂棬100
A1

442000050
031"r"n"
        "",
        LAST);
         从上面脚本的黑体部分可以看出,LoadRunner向服务器提交的请求body部分,输入的中文字段被变成了诸如“浣忔埧”这样的乱码。遇到这样的情况,或许这乱码的问题不能很容易得到解决,只能不加理会,直接点击回放,然后我们很高兴地发现,脚本回放成功了。
 这些乱码是可以被LR识别的,而且到应用系统中查看运行的结果,也没有问题,显示的是正确的中文。但是,我们可能会意识到:如果这个字段我们是需要进行参数化的怎么办?我们应该如何造出这种乱码的字呢?
        首先,我们直接用正常的字去参数化,这里只举其中的一个例子来说明,比如这个字段,我们用参数值“汽车”直接在脚本中替换“浣忔埧”,可惜脚本回放失败。然后就想到会不会是所有的中文字段都需要用才行呢?于是把所有的乱码都用简体字替换,脚本回放还是失败。
        通过以上的两点试验,说明直接参数化的方法是行不通的,我们必须另找办法。
       其实,在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:转换后的目标字符串。

 
    在本例中可以看到,我们需要把字符编码转换为UTF-8格式,因此用法如下:

    lr_convert_string_encoding("汽车",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");

    这样一来,就成功地完成了字符串的编码转换。此时我们就可以对"汽车"这个参数进行参数化,参数化的方法很简单,最终的脚本编码看起来像这样:
   //将参数name的值转换成utf-8,转换后的值为str。
   lr_convert_string_encoding("lr_eval_string("{name}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");


    完整的示例代码如下:

    char string[5000];
    char tmp[10];

    lr_convert_string_encoding(lr_eval_string("{name}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");
     //将转换后的值复制到tmp中
    strcpy(tmp,lr_eval_string("{str}"));  


     //将body的相关信息,存放在string中                    
     sprintf(string,"BodyBinary=CALLH001I1040%s01
鏆傛棤鍙风爜1110000001000000.00A110102641122043#1闇嶈景榫
""x9910001鍘﹂棬100
A1
442000050
031"r"n",tmp);


    //通过web_custom_request函数,以string代替请求中实际的body信息
    web_custom_request("CALL-H001I",
        "EncType=text/xml; charset=UTF-8",
        string,
        LAST);


http://blog.csdn.net/xifeijian/article/details/8309721

0 0
原创粉丝点击