51Testing软件测试论坛

标题: 关于Unicode转中文编码问题 [打印本页]

作者: twinsczl    时间: 2014-11-26 16:32
标题: 关于Unicode转中文编码问题
我最近测试一个项目,服务器返回的数据如下:
\\u7528\\u6237\\u540d\\u5bc6\\u7801\\u9519\\u8bef\\u3002
转为中文后如下:
用户名密码错误。

使用lr_convert_string_encoding函数无法将对应的Unicode解码成中文或者解码出来也显示乱码

大家是否也有遇到类似问题,请教下!

作者: twinsczl    时间: 2014-11-27 09:58
木有人知道吗?
作者: 土土的豆豆    时间: 2014-11-27 15:38
没有勾上录制选项中的UTF-8选项?
如果当被测系统是使用GB编码格式,就算勾上UTF-8选项照样是乱码
int lr_convert_string_encoding 函数即可,该函数支持各种编码标准转换,如下:

函数格式:

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

参数描述:


sourceString  

The string to convert  


fromEncoding  

The encoding of the sourceString  


toEncoding  

The encoding to convert of the string saved in parameter paramName  


paramName  

The name of the parameter in which the destination string will be saved  



编码类型:



Constant  


Value  


LR_ENC_SYSTEM_LOCALE  

NULL  


LR_ENC_UTF8  

"utf-8"  


LR_ENC_UNICODE  

"ucs-2"  



在上面说的那总情况使用下面方法即可解决乱码回放失败的问题:

lr_convert_string_encoding("乱码内容",LR_ENC_UTF8,LR_ENC_SYSTEM_LOCALE,"ParaValue");

使用该语句转换后,如果你系统是GB编码标准被测系统也是GB编码标准,问题既可以解决

作者: twinsczl    时间: 2014-11-28 11:03
土土的豆豆 发表于 2014-11-27 15:38
没有勾上录制选项中的UTF-8选项?
如果当被测系统是使用GB编码格式,就算勾上UTF-8选项照样是乱码
int lr_ ...

我调试了很多组合均无法转码成功
例如:
这个字\u8bef是unicode编码【正常为中文:

lr_convert_string_encoding("\u8bef","UNICODE","GBK","string");----------->转码后变为"string = 甸扥?\x00".
lr_convert_string_encoding("\u8bef","UNICODE","GB2312","string");------->转码后变为"string = 甸  \x00".



lr_convert_string_encoding("\u8bef","UNICODE","UTF-8","string");--------->转码后变为"string = 鐢告墺锟\xbd\x00".

lr_convert_string_encoding("\u8bef","UNICODE","UTF-16","string");-------->转码后变为"string = \xff\xfe8ueb\xfd\xff\x00".

lr_convert_string_encoding("\u8bef","ucs-2","GBK","string");--------------->转码后变为"string = ?敢f?畜敳獲..[大段乱码省略]..慜浤湩?c\x00".

lr_convert_string_encoding("\u8bef","ucs-4","GBK","string");--------------->转码后变为"string = ??\x00".


....

试了很多组合,均无法将unicode的字符转为中文,是否是这个函数不支持?

哪位大侠帮我调试下,可以用lr_convert_string_encoding函数,将unicode字符例如:\u8bef 转成正常的中文汉字?





作者: 授客    时间: 2014-11-28 12:41
twinsczl 发表于 2014-11-28 11:03
我调试了很多组合均无法转码成功
例如:
这个字\u8bef是unicode编码【正常为中文:误】

自己弄吧。。。。这个得用宽字符来稿。。。。但是lr里面似乎不识别。。。。
作者: twinsczl    时间: 2014-12-1 09:09
授客 发表于 2014-11-28 12:41
自己弄吧。。。。这个得用宽字符来稿。。。。但是lr里面似乎不识别。。。。

好吧,我研究研究
作者: yy_mei    时间: 2015-11-30 11:12
请问研究出来了吗  求分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2