• 编码问题之---解决英文系统乱码


    问题:

    程序中有如下逻辑:

    1. 向网络请求数据,然后获取响应的部分HTML代码,此时获取到的数据为宽字节字符(wchar_t)。
    2. 需要对获取到的部分HTML代码进行分析,但是处理逻辑只接受多字节字符(char),这个就需要进行编码转换,使用ATL提供的转换函数(其实是个模板类)CW2A。并且使用默认的code page :CP_THREAD_ACP。
    3. 分析过程会从HTML中解析出一些属性值,当然这些属性值是以多字节字符返回的。
    4. 程序其他地方需要使用这些属性值,我们又得把多字节字符转换成宽字节字符,使用CA2W。

    在中文操作系统下面一切正常,可是到了英文系统下就会出现HTML中的中文属性值乱码。

    解决方法:

    在使用ATL字符转换函数时,不要用默认参数CP_THREAD_ACP,而是使用UTF8的编码。

    分析:

    CP_THREAD_ACP和CP_ACP应该是一样的,都是使用ANSI的编码,在调试状态下,可以看到第二步的字符转换结果是一些乱码“????”,第四步转换会宽字节字符任然是乱码“????”。

    使用UTF8进行转换第二步结果是中文乱码(是一些繁体字之类的),到第四步结果就会恢复过来。

  • 相关阅读:
    CSS发布时间
    1CSS简介
    CSS 样式的优先级(重要,一定要理解)
    css为什么叫层叠样式表
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
  • 原文地址:https://www.cnblogs.com/aishangxue/p/3396488.html
Copyright © 2020-2023  润新知