字符编码问题

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

原文链接: https://www.cnblogs.com/wangshaowei/p/8570025.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    字符编码问题

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/392034

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月31日 上午10:53
下一篇 2023年3月31日 上午10:53

相关推荐