zoukankan      html  css  js  c++  java
  • 字符编码问题

    1.在中文系统下,ANSI就是GB2312编码;unicode是万国符,一个符号由两个字节表示,设置可视化字体时一般都要转换成unicode;utf-8是unicode的一种实现方式?一个字符的
    字表示需要1到4个字节不定长
    2.在字符串前加一个L作用: 如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。 sizeof("asd") = 3; sizeof(L"asd") = 8;_T宏
    可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式 如果你定义了UNICODE,那么_T宏会把
    字符串前面加一个L。这时 _T("ABCD") 相当于 L"ABCD" ,这是宽字符串。 如果没有定义,那么_T宏不会在字符串前面加那个L,_T("ABCD") 就等价于 "ABCD"
    3.要想从一个配置文件中读字符并显示出来,读的编码格式和显示的编码格式都要正确,否则就可能造成乱码
    4.从一个xml配置文件中读取数据时,虽然有这么一句<? xml encoding="***" ?>,但是xml解析器很大可能并不是按encoding后的编码格式来读取,网上查找资料后显示读取规
    则如下
    (1.如果文挡有BOM(字节顺序标记,一般来说,如果保存为unicode格式,则包含BOM,ANSI则无),就定义了文件编码(另存为文件时,选择的编码格式)。
    (2.如果没有BOM,就查看XML encoding声明的编码属性。
    (3.如果上述两个都没有,就假定XML文挡采用UTF-8编码
    !!!但是,实际测试后所有的情况是,不管有没有BOM(不太清楚BOM,但试了带BOM utf-8和无BOM utf-8),xml解析器读取数据的格式是按照这个xml文件保存的编码格式读取
    的,比如新建一个文档往其中写入xml数据,因为中文环境下文档默认以ANSI编码格式保存,则xml解析器就会将"视频"这两个字在内存中保存为 "ca d3 c6 b5".而如果把文档
    改为utf-8格式,"视频"读到内存中就为"e8 a7 86 e9 a2 91 22"

    总结,在保存文档时,尽量用notepad这种工具直接将文档保存为想要解析xml数据的编码格式(即和encoding="***"一样);论坛推荐文件格式最好为utf-8 无BOM

  • 相关阅读:
    HDFS文件系统
    使用cmake安装单实例mysql
    python读取数据库表数据并写入excel
    linux文件行数统计
    ORACLE清空回收站操作
    Oracle 11g静默安装
    图解Java设计模式之职责链模式
    图解Java设计模式之策略模式
    图解Java设计模式之状态模式
    图解Java设计模式之解释器模式
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/8570025.html
Copyright © 2011-2022 走看看