如何区分两个字节的unicode和四个字节的unicode?我看一些资料发现,UCS-2是用两个字节来表示代码点,其取值范围为 U+0000~U+FFFF。这个两个字节的unicode,好像没有空间留给区分四个字节unicode的空间。因为围为 U+0000~U+FFFF,都包含所有的字符空间,怎么会留有空间表示四个字节的unicode呢?并且,我用记事本保存一些偏僻字的时候,发现两个字节的unicode和四个字节unicode都在一起。

解决方案 »

  1.   

    目前windows好像只支持2字节的unicode。你的“偏僻字”的编码是什么?怎么确定是4个字节的?
      

  2.   


    打开的记事本,选“另存为”,在“另存为”对话框中,看“编码”包含什么,Windows就支持什么。
      

  3.   


    是unicode,因为是我要把这个文件放到自己的输入法里,会注意到这个问题的。而我的输入法是基于unicode开发的,目前可以输入2万多个汉字,现在想升级它,让它可以输入7、8万个汉字,就发现了这些疑问。我很郁闷,为什么两个字节的unicode和四个字节的unicode是可以放到一起的?
      

  4.   

    windows 中的Unicode采用16位(2字节)的编码方案,这样只能表示6万多个字符。为编码更多的字符,采用了一种叫代理项对的方案。即采用两个编码来表示一个字符。这些编码不得做它用。其中第一个字的范围是:d800-dbff,第二个字的范围是:dc00-dfff.
      

  5.   


    我几天没来了。你查一下GB18030,上面有27533个汉字,支持中日韩三国文字。每个汉字的下面是4个字节的国标码,国标码的下面是2个字节的UNICODE码。任何“四个字节”的文字,都有它的两个字节的UNICODE编码。
      

  6.   


    你在记事本中,保存一个四个字节的“偏僻字”,查看这个文件的大小,究竟占几个字节。别忘了,UNICODE文本,有两个字节的文件头(0xFE、0xFF),还有文件结束符。
      

  7.   

    我也经常写输入法软件,市面上的“新方码”核心部分就是我写的。我也很想感知一下楼主遇到的现象。把你的那个“发现两个字节的unicode和四个字节unicode都在一起”的记事本发给我,Email:[email protected]谢谢!
      

  8.   


    或者找个hex软件,把16进制数记下来发出来,比如81 32 e8 34等等。
      

  9.   

    看我刚发的“教你在XP下如何输入GB18030汉字 ”
      

  10.   

    !!!其中第一个字的范围是:d800-dbff,第二个字的范围是:dc00-dfff.!!!楼上有人已经说的非常清楚了,我也是查询资料已久,这位仁兄的话让我茅塞顿开,谢谢你!
      

  11.   

    用正则“[\ud800-\udbff][\udc00-\udfff]”可以确定四字节unicode汉字,在字符串中的位置,剩下怎么处理都看个人了。