51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2665|回复: 6
打印 上一主题 下一主题

关于Unicode转中文编码问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-11-26 16:32:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我最近测试一个项目,服务器返回的数据如下:
\\u7528\\u6237\\u540d\\u5bc6\\u7801\\u9519\\u8bef\\u3002
转为中文后如下:
用户名密码错误。

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

大家是否也有遇到类似问题,请教下!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2014-11-27 09:58:58 | 只看该作者
木有人知道吗?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-6 17:37
  • 签到天数: 1137 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2014-11-27 15:38:10 | 只看该作者
    没有勾上录制选项中的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编码标准,问题既可以解决

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 赞一个!

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2014-11-28 11:03:01 | 只看该作者
    土土的豆豆 发表于 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 转成正常的中文汉字?




    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-8-2 21:08
  • 签到天数: 817 天

    连续签到: 1 天

    [LV.10]测试总司令

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

    自己弄吧。。。。这个得用宽字符来稿。。。。但是lr里面似乎不识别。。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2014-12-1 09:09:36 | 只看该作者
    授客 发表于 2014-11-28 12:41
    自己弄吧。。。。这个得用宽字符来稿。。。。但是lr里面似乎不识别。。。。

    好吧,我研究研究
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2015-11-30 11:12:33 | 只看该作者
    请问研究出来了吗  求分享
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-27 22:11 , Processed in 0.070031 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表