- 6
- 0
- 约3.52万字
- 约 18页
- 2016-12-11 发布于河南
- 举报
目录:
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc290372816 在C/C++中使用Unicode字符串 PAGEREF _Toc290372816 \h 1
HYPERLINK \l _Toc290372817 Visual C++ UNICODE编码释疑 PAGEREF _Toc290372817 \h 6
HYPERLINK \l _Toc290372818 字符编码简介:ASCII,Unicode,UTF-8,GB2312 PAGEREF _Toc290372818 \h 12
在C/C++中使用Unicode字符串
摘录自:/archives/492
??KC曾经写过这方面的文章,但是当时只是浅尝辄止,而且似乎“宣传”的效果也不怎么好,所以这次有必要进行一次深入的探讨。
1.ANSI(MBCS)和UNICODE的前世今生
??ANSI是最先采用的字符集,以1Byte表示一个字符,后来为了表示含有音标的字母而产生了变种系列。但是这种字符集最大的问题是,无法表示诸如汉字、日本这样的“大字符”
??于是,当初设计ANSI的那批人(瞎猜的,出错勿怪)很天才的设计了一种新的字符集,即后来的MBCS(MBCS中最常用也最常见的是DBCS)。MBCS利用1Byte表示原有的那些字符,并利用2Bytes或更高来表示大字符,于是乎,就可以解决原先的问题了。
??但是,这个看似高明的方法并不高明。因为某些字符是1Byte,而某些则是2Bytes或更高。程序员在遍历字符串的时候,必须检查下一个字节,才知道正在处理的是小字符还是大字符。这对程序员和项目经理来说,无疑是一场噩梦。
??内牛满面的科学家通过不断的猜想,建模,设计,最终设计产生了目前最广泛使用的UNICODE字符集。
??题外话:这里我们要感谢Apple、Xerox、Compaq、IBM、Microsoft、Oracle.etc,否则我们这批Coder也要继续内牛满面。
??UNICODE字符集中,每个字符都是用2Bytes来表示,包括’\0′。统一的规范的结果则是效率的提升。
??更让人欣喜的是,UNICODE可以在原来拥有超强语言字符支持的基础上,引入新的文字符号,包括标点符号、数学符号和技术符号等。
??既然1F的swd同学指出来了,那么这里我们就在“深入”一点
??事实上,默认的UNICODE指的是UTF-16,并且也存在其他表示字符的UTF标准。
??UTF-8.UTF-8将一些字符编码为1Byte,一些为2Bytes,一些为3Bytes,而一些甚至可以达到4Bytes。值在0×0080以下的字符压缩为1Byte,这对US使用的字符非常合适。而0×0080到0x07FF之间的字符转换2Bytes,常用于欧洲和中东地区的字符。0×0080以上的字符为3Bytes,用于东亚字符,而最后把代理类型设置成4Bytes。但是当存在大量0×0080字符时,效率不如UTF-16高,好处是可以和原有的ANSI兼容
??UTF-32是另一种标准。它将每个字符编码为4Bytes,除了程序内部之间使用之外,MS用的不多。
??ps:对于ANSI和UNICODE的介绍,你可以在《Windows程序设计》、《Windows核心编程》等书中找到,并且,在Wikipedia上,也有详细的介绍??ANSI: HYPERLINK /zh-cn/ASCII \t _blank /zh-cn/ASCII??UNICODE: HYPERLINK /zh-cn/UNICODE \t _blank /zh-cn/UNICODE
2.为什么使用UNICODE
??其实原因很简单,因为UNICODE比ANSI好用。
?? 自从Windows2K开始,Win的系统内核开始完全支持并完全应用UNICODE编写,所有ANSI字符在进入底层前,都会被相应的API转换成UNICODE。所以,如果你一开始就使用UNICODE,则可以减少转换的用时和RAM开销。
?? 对于JAVA/.NET等这些“新”的语言来说,内置的字符串所使用的字符集已经完全是UNICODE
?? 最重要的是,目前世界上大多数的程序用的字符集都是UNICODE,因为UNICODE有利于程序国际化和标准化。
?? 但是很不幸,由于某国教育的滞后,教材陈旧不堪,致使大批学生“受害”。(据说最近某国大学的IDE从TC改成了VC6,可见无论某国教育怎么变,最终学生都免不了思想被强/墙奸的命运)。
3.如何在C/C++中使用UNICODE
??在C/C++中使用UNICODE,就意味着你可能要抛弃已经非常熟悉的char和ANSI版字符串处理函数。取而代之的是使用wchar_t,并且在使用字符串的时候,在”前加L
您可能关注的文档
最近下载
- 2025年军考提干题目及答案.doc VIP
- 桥门式起重机检验规程.doc
- 文字汉字结构汉字结构现代汉语教案.docx VIP
- 全口义齿特殊颌型.pdf VIP
- 学堂在线 雨课堂 学堂云 研究生的压力应对与健康心理 期末考试答案.docx VIP
- 学堂在线 雨课堂 学堂云 研究生的压力应对与健康心理 章节测试答案.docx VIP
- 在线网课学习课堂《现代农业创新与乡村振兴战略(扬州)》单元测试考核答案.docx VIP
- 学堂在线 雨课堂 学堂云 艺术的启示 章节测试答案.docx VIP
- 2026年中考语文一轮专题复习:现代文阅读.docx VIP
- 计算机基础知识试题(答案_).docx VIP
原创力文档

文档评论(0)