Che*_*eng 9 unicode internationalization visual-c++
通过引用乔尔的文章
有些人误以为Unicode只是一个16位代码,每个字符占16位,因此有65,536个可能的字符.实际上,这不是正确的.
在阅读完整篇文章之后,我的观点是,如果有人告诉你,他的文字是unicode,你将不知道他的每个角色占用了多少内存空间.他必须告诉你,"我的unicode文本以UTF-8编码",然后只有你知道他的每个角色占用了多少内存空间.
Unicode =每个字符不需要2个字节
但是,当涉及Code Project的文章和微软的帮助时,这让我很困惑:
微软:
Unicode是一种16位字符编码,为所有语言提供足够的编码.所有ASCII字符都包含在Unicode中作为"加宽"字符.
代码项目:
Unicode字符集是一个"宽字符"(每个字符2个字节)集,包含每种语言中可用的每个字符,包括所有技术符号和特殊发布字符.多字节字符集(MBCS)每个字符使用1或2个字节
Unicode =每个字符2个字节?
65536个可能的角色是否能够代表这个世界上的所有语言?
为什么Web开发人员社区和桌面开发者社区中的概念看起来不同?
Kev*_*eid 11
很久以前,
这些因素导致UTF-16(或者更确切地说,现在称为UCS-2)被认为是"Unicode"的同义词,因为它毕竟是支持所有Unicode 的编码.
实际上,您将看到在使用"UTF-16"或"UCS-2"时使用的"Unicode".这是一个历史性的混乱,应该被忽略而不是传播.Unicode是一组字符 ; UTF-8,UTF-16和UCS-2是不同的编码.
(UTF-16和UCS-2之间的区别在于UCS-2是真正的16位/"字符"编码,因此仅编码Unicode的"BMP"(基本多语言平面)部分,而UTF- 16使用"代理对"(总共32位)来编码高于BMP的字符.)