确定Windows XP到底是UCS-2的还是UTF-16的

标签: , ,

一般认为Windows下以16bit表示的Unicode并不是UTF-16,而是UCS-2。但是这并不正确。

UCS-2是一种编码格式,同时也是指以一一对应关系的Unicode实现。在UCS-2中只能表示U+0000到U+FFFF的BMP(Basic Multilingual Plane ) Unicode编码范围,属于定长的Unicode实现,而UTF-16是变长的,类似于UTF-8的实现,但是由于其字节长度的增加,所以BMP部分也做到了一一对应,但是其通过两个双字节的组合可以做到表示全部Unicode,表示范围从U+0000 到 U+10FFFF。关于这一点,我在很多地方都看到混淆了,混的我自己都有点不太肯定自己的说法了,还好在《UTF-16/UCS-2》中还是区别开了,不然我不知道从哪里去寻找一个正确答案。(哪怕在IBM的相关网页上都将UCS-2作为UTF-16的别名列出)

《UTF-16/UCS-2》文中有以下内容:

UTF-16 is used for text in the OS API in Microsoft Windows 2000/XP/2003/Vista/CE.[7] Older Windows NT systems (prior to Windows 2000) only support UCS-2.[8] In Windows XP, no code point above U+FFFF is included in any font delivered with Windows for European languages.[9][10]

很明确的说明了Windows 2000以后内核已经是UTF-16的了。

原文链接:http://blog.csdn.net/vagrxie/article/details/3947054

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. PHP base_convert函数的一个有趣现象
  2. PTMaster,新的PT流量作弊工具?
  3. 用JavaScript实现PHP的basename函数
  4. 也谈Windows记事本的BUG
  5. VC实现XP风格控件效果

留下回复