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