如题。unicode试图用唯一的数值,来对应世界上的任何一种语言里面的任何一种符号。但是,我感觉,中文就已经有很多个字了,大约可能有几万个,再加上日文,韩文之类的,我觉得世界上的字加起来,肯定是超过2^16所能表示的范围。如果是那样,则如何来表示这么多的文字呢?难道要32位?而且我们一般运算或者编程使用的,unicode是不是和 short的类型是一样的,也就是占用两个字节?请大侠来释疑。谢谢。

解决方案 »

  1.   

    Unicode是16位
    但不同国家地区的编码是不同的,只要中国汉字不超过60000就可以啊
      

  2.   

    Unicode 的编码方式与 ISO 10646 的通用字元集(亦称[通用字符集])(Universal Character Set,UCS)概念相对应,目前的用于实用的 Unicode 版本对应于 UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示 65,536(2的16次方) 个字符。基本满足各种语言的使用。实际上目前版本的 Unicode 尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。目前只含20902个汉字。 上述16位 Unicode 字符构成基本多文种平面(Basic Multilingual Plane, 简称 BMP)。最新(但未实际广泛使用)的 Unicode 版本定义了16个辅助平面,两者合起来至少需要占据21位的编码空间,比3字节略少。但事实上辅助平面字符仍然占用4字节编码空间,与 UCS-4 保持一致。未来版本会扩充到 ISO 10646-1 实现级别3,即涵盖 UCS-4 的所有字符。UCS-4 是一个更大的尚未填充完全的31位字符集,加上恒为0的首位,共需占据32位,即4字节。理论上最多能表示 2,147,483,648(2的31次方)个字符,完全可以涵盖一切语言所用的符号。BMP 字符的 Unicode 编码表示为 U+hhhh,其中每个 h 代表一个十六进制数位。与 UCS-2 编码完全相同。对应的4字节 UCS-4 编码后两个字节一致,前两个字节的所有位均为0。在代码编写时,一个UNICODE字符的类型可认为是一个UNSIGNED SHORT!在VC6中,所有与字符串处理有关的C函数和Windows API函数都有UNICODE版本,请使用它们编写你的UNICODE应用程序。
      

  3.   

    我觉得,2楼说的不太对,也就是说,没有所谓的不同国家的编码是不一样的这样一种说法。
    三楼说的很有道理,目前广泛使用的16位的unicode,里面已经包含了2万多个汉字,这个我还是很赞同的,其实说实话,中国字是表意文字,就比较多,其他很多国家的文字,都是表英文字,就没有那么多,所以我想常用的,用16位来表示所有语言的所有符号,应该是足够了,呵呵。不知道我理解的对不对。今天为了弄懂这个,花费了很多时间在网上找,但是还是云里雾里的,看wiki也不是很看得懂,呵呵。
      

  4.   

    但不同国家地区的编码是不同的,只要中国汉字不超过60000就可以啊
    =========================
    胡说八道,要是这样的,UNICODE还有什么用呢?这不是越来越乱,用UNICODE的一个目的就是不用再本地化了。
      

  5.   

    lz的理解没有错误。
    Unicode有两套标准,一套叫UCS-2(Unicode-16),用2个字节为字符编码,另一套叫UCS-4(Unicode-32),用4个字节(实际上只用了31位,最高位必须为0)为字符编码。目前常用的UCS-2,它可以表示的字符数为2^16=65535,基本上可以容纳所有的欧美字符和绝大部分的亚洲字符 。 但是很明显,如果要支持所有的亚洲字符,必须用UCS-4
      

  6.   

    谢谢你的回答。
    我比较同意你的观点。
    按照我的理解,现行的windiws2000或者 windows xp系统,所谓采用的Unicode编码,其实,指的是采用了 UCS-2的格式来编码的,所以看到的windows编程里面关于unicode的资料,都是 w_char 双字节的,(而且字节长度也是固定不变的),如果真的以后要全面推广UCS-4的话,windows现行的一些API函数,可能得做进一步的更新和完善。当然啦,目前来说,用16位的unicode一般来说也够用了,呵呵。以上都是我的个人理解,有不对之处,希望大家批评指正。
      

  7.   

    看看这里
    http://glyph.iso10646hk.net/chinese/tinfo_3.jsp
      

  8.   

    windows 程序设计 里面说的很清楚
      

  9.   

    深入了解,还是应该看这里:
    http://www.unicode.org/
      

  10.   


    谢谢你的回答:
    首先我想问一下:我的如下观点,哪里错了?1,unicode的本质,想让所有的语言里面的所有字符,都有唯一一个表示码,这个理解应该是正确的吧。
    2,我就目前的unicode的程序里面的内容而言,我看了好基本windows编程的书,比如《windows MFC programing》等。里面对于unicode的解释,都是说16位定长度的,这个应该也没有错吧?3,可能现在的unicode版本,需要容纳更多的字符,所以16位显然是不够的,因此,有更多字节表示的unicode方法。请批评指正,谢谢。
      

  11.   

    unicode只是一个通称,里面包括ucs2和usc4等不同的编码。
      

  12.   

    2字节UNICODE能包含常用汉字编码,典型的就是GB2312,包含7445个基本汉字和图形字符,后来扩充的GBK编码仍然与GB2312兼容,但是汉字扩充到了20902,包含了中日韩(CJK)汉字。如果要完整使用所有当前的汉字(包括古代字、通假字、生僻字等),2字节UNICODE编码已经不够使用了,必须使用GB18030编码,它使用了4字节编码。要使用GB18030字库,必须使用特定的API。
      

  13.   


    恩,赞同!
    我相信一般我们windows编程里面都是使用普通的2字节的API就足够了。
    而,四字节编码的,需要“特殊API”。