对Unicode和多字节文章的困惑

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

很久以前,

  • Unicode只有16位的字符数,而且
  • UTF-8不存在或不是事实上的编码使用.

这些因素导致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的字符.)