loadrunner返回信息乱码解决方案

欢迎访问个人博客
http://kylin10.com/2017/02/06/%E8%BF%94%E5%9B%9E%E4%BF%A1%E6%81%AF%E4%B9%B1%E7%A0%81%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

问题描述

loadrunner是一个很强大的工具,但是对于中文的支持并不友好,从服务器返回的信息如果包含中文,显示将会是乱码。

本教程可以轻松查看乱码信息,使信息更直观。

了解乱码

乱码带来的问题

  1. 看不懂

  2. 如果是关键信息,无法根据这个信息进行判断事务成功与否

         if( lr.eval_string("<result>").equals("true") ){
             lr.end_transaction("openAT",lr.PASS);       
             }
         else {
         lr.end_transaction("openAT",lr.FAIL);
         lr.error_message( lr.eval_string("<result2>") );
         } 
    

    一般我们都是像上面一样去判断一个返回的值是不是跟我们预期的一致,但是如果是判断乱码的问题,就不能直接这样判断了,不管是跟正常的中文判断还是乱码之后的字符判断,都无法正常判断。

解决乱码

c语言脚本

lr_convert_string_encoding 函数介绍

loadrunner中本身有一个函数 lr_convert_string_encoding ,可以用来查看乱码信息。

lr_convert_string_encoding converts a string encoding between the following encodings: System locale, Unicode, and UTF-8. The function saves the result string, including its terminating NULL, in the parameter paramName.

这是官方的解释,意思就是lr_convert_string_encoding() 函数可以将字符串在系统语言环境、Unicode和UTF-8

直接进行编码转换。

lr_convert_string_encoding 函数使用

int lr_convert_string_encoding( const char sourceString*, const char fromEncoding, const char **toEncoding, const char *paramName); 

举个例子:

假设乱码的字符串为:

鎵嬫満鑾峰彇app鐢ㄦ埛璇勮淇℃伅鏃跺嚭閿\x99

鬼知道这是什么!

那么我们就用lr_convert_string_encoding()函数来处理一下,

lr_convert_string_encoding("鎵嬫満鑾峰彇app鐢ㄦ埛璇勮淇℃伅鏃跺嚭閿\x99",LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"str");

现在已经将字符串从LR_ENC_UTF8格式转换到LR_ENC_SYSTEM_LOCALE编码,并且将新的字符串保存到了str变量中,我们重新输出一下str变量看一下:

str = 手机获取app用户评论信息时出错\x00

这样就OK了

java脚本

在测试过程中,java脚本还是用的很多的,但是发现loadrunner没有提供可以直接在java脚本中进行字符串编码转换的函数。

嗯,肯定是因为java已经有自己的解决方案了,然后想起前端开发过程中经常解决的乱码问题,道理都是一样的,开始干。

方法一:

我是这样想的,就把这个输出信息的控制台当作一个浏览器,为什么显示乱码了呢?肯定是这个浏览器在输出信息的时候额外做了一些手脚,把服务器返回的数据给转换了一下编码方式,导致信息不能正常显示。

我想到了java中字符串的getBytes()方法:

String的getBytes()方法是得到一个字串的字节数组,这是众所周知的。但特别要注意的是,本方法将返回该操作系统默认的编码格式的字节数组。

然后我实验了一下:

byte[] br = lr.eval_string("<result>").getBytes();
String brStr2 = new String(br,"utf-8");

将想要查看的内容保存到result参数中,然后对其重新编码并保存到brStr2变量中,输出brStr2,发现确实解决了乱码的问题。

但是有一次在用这个方法的时候,发现使用web.reg_save_param()保存乱码的信息到result的时候什么都没有保存,我猜测是因为乱码中的一些特殊字符导致左右边境判断失败,所以无法正常的保存信息。所以就想另外一个方法。

方法二:

既然我们都是使用web.reg_save_param()函数把相应的信息保存,这个函数本身有没有什么方法解决乱码问题呢?

去查询手册,发现了一个参数:

  • Convert:

    The possible values are:
    HTML_TO_URL: convert HTML–encoded data to a
    URL–encoded data format
    HTML_TO_TEXT: convert HTML–encoded data to plain text
    format
    This attribute is optional.

当我看到 HTML_TO_TEXT: convert HTML–encoded data to plain text format 也就是将HTML编码的数据转换为纯文本格式 的时候,感觉有希望!

然后添加上这个参数,并设置值为HTML_TO_TEXT,然后对结果重新进行编码,结果无论采用哪种编码方式,看到的仍然是乱码的。

然后试了一下另外一个值:HTML_TO_URL,发现是可以的!!!而且非常有效,建议以后可以采取这种方式,非常方便。

首先,引入相应的包,因为要用到URLdecode和encode的一些方法,直接在头部添加一行代码就OK:

import java.net.URLDecoder;

然后在平时使用的web.reg_save_param()函数中多加一行代码就OK

 web.reg_save_param ("result",
                     new String []{
                       "NOTFOUND=ERROR",
                       "LB=\"prompt1\":\"",
                       "RB=\"" ,
                       "Convert=HTML_TO_URL",
                       "LAST"} ); 

因为多了这么一行代码,那么穿过来的信息就被转换成了URL-encode之后的编码格式,我们看到的信息将是下图中的样子,直接看也是看不懂的,我们只要decode一下就可以了。

String str = URLDecoder.decode(lr.eval_string("<result>"),"utf-8");
System.out.println("结果是:"+str );
图片.png

经过实验发现这种方法非常有效,而且直观,也可以针对中文进行结果的判断。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容