|
本帖最后由 ares444 于 2013-10-22 16:24 编辑
背景:刚才在写新员工培训PPT的时候,我录制了个打开百度首页的脚本。其中,使用了web_reg_find函数来校验返回的响应中是否包含“百度”两个字
这里牵扯到一个字符集的问题。导致若是直接检测“百度”两个字会造成乱码,无法匹配
问题分析:
首先我登陆百度,查看了下百度首页的源文件,发现百度的字符集为: UTF-8
于是我在脚本里就使用lr_convert_string_encoding函数来转换字符集。
脚本如下:
Action()
{
lr_convert_string_encoding("百度",LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");
web_reg_find("Search=body",
"Text={str}",
LAST);
web_url("www.baidu.com",
"URL=http://www.baidu.com/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"Url=/img/i2.png", ENDITEM,
"Url=/img/arr.gif", ENDITEM,
"Url=/js/bdsug.js?v=1.0.3.0", ENDITEM,
"Url=/cache/hps/js/hps-1.0.js", ENDITEM,
LAST);
return 0;
}
但是,执行的结果报错:Action.c(10): Error -26366: "Text=鐧惧害" not found for web_reg_find
[MsgId: MERR-26366]
从报错信息里可以看出:百度两个字成功转成了UTF-8编码,为“鐧惧害”
于是,我修改了脚本,将检查点那段直接改成如下:
web_reg_find("Search=body",
"Text=鐧惧害",
LAST);
然后再次运行脚本,居然检查通过了。。
问题:
现在问题就来了。为什么我用变量就检查不通过,而直接把值写进来就检查通过了呢?我变量明明解析成功了啊。。。求高人指点 |
|