在vista,已经支持了UNICODE 5, windows内部用的是utf-16,标准的UTF-16是可以完整表示全部的unicode字符的(使用代理对,用32位表示一个字符),但是VC 中只提供了wchat_t,它是16位的,怎么能表示2^16基本字符以外的汉字呢?它最多只能表示一个基本字符外的汉字中的utf-16代理对中的一半啊。

解决方案 »

  1.   

    它并不是每个字符都是一个wchat_t,也可能2个wchat_t表示一个字符
      

  2.   

    wchar_t就是Unicode用的宽字符类型。用双字表示的字符,汉字字符即为双字
      

  3.   

    unicode的具体表示方式分为utf7, utf8, utf16( big, end ), utf32等,每一种都有一些是转义的。http://baike.baidu.com/view/2049746.htm见
    UTF16[4 BYTE]格式说明:
      

  4.   


    汉字字符即为双字是不对的,这个得看具体的编码方式而定,比如说utf-8大多数汉字都是三个字节。utf-16大多是2个字节。
    而且Unicode不是编码方式。
      

  5.   


    我的意思是怎么表示一个字符啊?
    wchat_t w=L'焤';对于windows,VC++,这样不能保证w一定能放得下啊。
      

  6.   


    这个我知道,我想知道的是怎么表示一个字符,
    wchat_t w=L'焤';对于windows,VC++,这样不能保证w一定能放得下啊。
      

  7.   

    lz看看这个http://hi.baidu.com/itpassion/blog/item/a3ba09c286c83a34e4dd3bf2.html