chechesoft 发表于 2010-9-16 14:25:35

急——求web_custom_request函数乱码解决!

关于乱码问题搜了有3天了,坛里或别的地方找到的方法全部都试过了,还是不行。
测试服务器端编码为gb2312,我没勾选录制设置里的UTF8支持录的和勾了以后录的脚本都一样乱码。 录制用的浏览器为IE6,查看那儿的编码设置为简体中文(GB2312),IE设置高级里没有勾选(总是以UTF-8发送URL)选项。

我用了各种设置搭配录了很多遍,每次的脚本都一样。仔细观察脚本发现登录页面的数据请求用的是web_submit_data函数,value值后面是中文,正常,没乱码(估计因为登陆页面简单,LR自动生成web_submit_data请求),但是后面的页面提交数据项复杂很多,LR自动生成的是web_custom_request函数,这时候就全是乱码了,截一小段请求body大家帮忙看看:

"BodyBinary=
<RootInfo>
<RowSet Name='SCustInfo4Na' FullName='com_asiainfo_openboss_obd_MPublicDef_SCustInfo4Na'Sts='U'>
<Row Sts='N'>
<Col Name='M_STRCUSTNAME' Sts= 'N'ID ='陈&aring;\xAE\xB6é&sup1;\\x8F' ></Col>
<Col Name='M_NCUSTTYPE' Sts= 'N'ID ='1' >&aelig;™\xAE\xE9\\x80š&aring;\xAE\xA2&aelig;ˆ\\xB7</Col>
<Col Name='M_NREGTYPE' Sts= 'N'ID ='1' >&Eacute;í·&Yacute;&Ouml;¤\\x81</Col>
............//有很多个col name定义
<Col Name='M_NCREDITCLASS' Sts= 'N'ID ='1' >&aelig;™\xAE\xE9\\x80š&ccedil;&ordm;§&aring;ˆ\\xAB--&aring;Ž&auml;&raquo;˜è&acute;&sup1;&ccedil;”¨&aelig;ˆ\\xB7</Col>
<Row>
</RowSet>
</RootInfo>",
LAST);

除了这个request,还有n个请求页面,n个地方需要做参数和关联,乱码不解决根本没法儿做啊。。。搜到有网友说用lr_convert_string_encoding 这个函数,但是前提是你得知道哪个位置换哪批参数啊,我现在是完全没法子把参数文件和该替换的位置对应起来,,哪位大神来帮帮我啊。。。。。。

chechesoft 发表于 2010-9-16 14:38:07

web_custom_request函数说明:
Body(目前仅适用与web_custom_request函数):请求体。不同的应用中,请求体分别通过Body、BodyBinary或者BodyUnicode参数来传递。请求体可以只使用其中一个参数,也可以使用一连串的分开的参数组成多请求体。例如:
web_custom_request(
……
"BodyUnicode=REPRICE"
"BodyBinary=\\x08\\x00\\xCC\\x02\\x00\\x00"
"Body=.\r\n"
"-dxjjtbw/(.tp?eg:ch/6--\r\n",
LAST);

在上面的代码中,使用了3个参数来划分请求体,一个是Unicode段,一个是二进制段,最后一个是常规的字符串。最终的请求体是这3个参数按照在函数中的顺序连接起来的值。
所有的请求体都是ASCII字符,以null结束。

Body:表示规则的,可打印的字符串。无法表示空字节。所有的字符都以一个反斜杠表示。注意:在旧的脚本中,可以看见不可打印的字符在请求体中以16进制方式进行编码。(例如 “\\x5c”),在这种情况下,必须使用“Binary=1”来标识。空字节使用"\\00"来表示。 相反,新脚本则会把把请求体分开放在不同的参数中("Body=...", "BodyBinary=...", Body=...")。

BodyBinary :表示二进制代码。不可打印的字符在请求体中以16进制方式\\xHH进行编码。在这里HH 表示十六进制值。空字节使用"\\00"来表示。

BodyUnicode:美国英语, 特指拉丁 UTF-16LE(little-endian)编码。这种编码方式会在在每个字符末尾附加一个0字节,以便使字符更可读。但是在VuGen中实际的参数把所有的0字节都去掉的。但是在发送给Web 服务器之前, web_custom_request函数会重新添加0字节的。对于不可打印的字符,使用单反斜杠表示,无法表示空字节。

我发现我录制的脚本中,只有BodyBinary这一种请求体啊,如果是Body的话是不是就不会是乱码呢?是这个原因么?如果是,可是我怎么知道LR为什么用哪一种呢?怎么改呢?大侠们帮帮忙啊

ccaklyw 发表于 2010-9-16 15:18:38

是不是必须用中文呢?录制脚本的时候看能不能把用中文的地方全部用英文。这样就不用为乱码而发愁了。

chechesoft 发表于 2010-9-19 22:16:23

录制时输入的一些信息我改成英文,能定位到,但是页面很多输入数据项是下拉列表,全是返回选项,全是中文,没法儿定位啊。。。呜呜呜

PrefTest 发表于 2010-9-20 16:57:14

可以尝试用其他工具,例如HttpWatch跟踪一下HTTP请求,把请求内容替换掉LR录制的脚本中乱码的部分

msnshow 发表于 2010-9-20 21:13:00

LR 11 好像有这样的新功能,可以解决乱码问题

lhp_margaret 发表于 2018-3-15 09:22:13

你好,请问你这个问题怎么解决的?我也遇到同样的问题,求大神指教啊
页: [1]
查看完整版本: 急——求web_custom_request函数乱码解决!