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


    问题:

    程序中有如下逻辑:

    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进行转换第二步结果是中文乱码(是一些繁体字之类的),到第四步结果就会恢复过来。

  • 相关阅读:
    2018-2-26 php、mysql数据库制作简单的商城购物车
    2018-2-8 租房信息的增删改和搜索
    2018-2-6 留言板的制作
    ztree连接数据库问题总结
    织梦cms
    MySQLDB.class.php
    类和对象
    构造、析构;重写;设计模式;单例;抽象;重载
    类、面向对象、类的继承
    css 区块与盒子模型
  • 原文地址:https://www.cnblogs.com/aishangxue/p/3396488.html
Copyright © 2020-2023  润新知