第一个是普通的汉字字符集,也就是说,如果一个字节的最高位如果为1,则是个双字节字符,例如汉字,如果不为1则是单字节字符,而第二个使用wcscpy,则把他映射到unicode字符集,无论什么字符都是双字节,这两个值当然不一样。
以下是windows核心编程对unicode的解释
U n i c o d e是A p p l e和X e r o x公司于1 9 8 8年建立的一个技术标准。1 9 9
1年,成立了一个集团机
构负责U n i c o d e的开发和推广应用。该集团由A p p l e、C o m p a q、H P、I
B M、M i c r o s o f t、O r a c l e、
Silicon Graphics, Inc.、S y b a s e、U n i s y s和X e r o x等公司组成(若要
了解该集团的全部成员,请
通过网址w w w. U n i c o d e . o rg查找)。该集团负责维护U n i c o d e标准。
U n i c o d e的完整描述可以参阅
A d d i s o n We s l e y出版的《Unicode Standard》一书(该书可以通过网址w w
w. U n i c o d e . o rg订购)。
U n i c o d e提供了一种简单而又一致的表示字符串的方法。U n i c o d e字符串中
的所有字符都是
1 6位的(两个字节)。它没有专门的字节来指明下一个字节是属于同一个字符的组成
部分,还
是一个新字符。这意味着你只需要对指针进行递增或递减,就可以遍历字符串中的各个
字符,
不再需要调用C h a r N e x t、C h a r P r e v和I s D B C S L e a d B y t e之
类的函数。
由于U n i c o d e用一个1 6位的值来表示每个字符,因此总共可以得到65 000个字
符,这样,
它就能够对世界各国的书面文字中的所有字符进行编码,远远超过了单字节字符集的2
5 6个字
符的数目。
目前,已经为阿拉伯文、中文拼音、西里尔字母(俄文)、希腊文、西伯莱文、日文、

文和拉丁文(英文)字母定义了U n i c o d e代码点。这些字符集中还包含了大量的
标点符号、
数学符号、技术符号、箭头、装饰标志、区分标志和其他许多字符。如果将所有这些字
母和符
号加在一起,总计约达3 5 0 0 0个不同的代码点,这样,总计65 000多个代码点中,
大约还有一
半可供将来扩充时使用。
这65 536个字符可以分成不同的区域。表2-2 显示了这样的区域的一部分以及分配给这

区域的字符。
表2-2 区域字符
1 6位代码字符16 位代码字符
0 0 0 0 - 0 0 7 F  A S C I I  0 3 0 0 - 0 3 6 F 通用区分标志
0 0 8 0 - 0 0 F F  拉丁文1字符0 4 0 0 - 0 4 F F 西里尔字母
0 1 0 0 - 0 1 7 F  欧洲拉丁文 0 5 3 0 - 0 5 8 F 亚美尼亚文
0 1 8 0 - 0 1 F F  扩充拉丁文 0 5 9 0 - 0 5 F F 西伯莱文
0 2 5 0 - 0 2 A F  标准拼音   0 6 0 0 - 0 6 F F 阿拉伯文
0 2 B 0 - 0 2 F F  修改型字母 0 9 0 0 - 0 9 7 F 梵文
目前尚未分配的代码点大约还有29 000个,不过它们是保留供将来使用的。另外,大约

6 0 0 0个代码点是保留供个人使用的。
代码点是字符集中符号的位置。我像你应该清楚了,就算是一个原来的ascii字符,映射为unicode,都会成为双字节,但值好像没变,只是扩展出了高字节为0x00,而其他字符集都是规定好的放在哪一段内。

解决方案 »

  1.   

    你还没搞明白呀
    "你"和 L"您"的编码是不一样的。一个是GB码,一个是UNICODE码。
    除了不一样外,没什么关系。
    现在大陆正在考虑统一编码的问题,统一后就不会有这种问题了。
      

  2.   

    一个普通的双字节内码中,可能会被不同的编码方式使用,例如0x9a9a在GB码表示某个汉字,而在shift-jis中又表示某个日文字符,这样要知道它是什么编码才能正确显示,而uniocde是统一的,不同的字符集使用从0-65535之间不同的一段编码,这样就在任何支持unicode系统上都能不用指定就正确显示,这两个编码方式是不一样的,当然它们的值不一样。
      

  3.   

    to Searph:在unicode中只有CJK段,也就是说你不知道是gb,big5,jis或ksc什么的.
      

  4.   

    在 VC中输入  MultiByteToWideChar 然后按F1   CHAR->UNICODE 
    没有这许许多多的编码,哪有这么难学的C++,嗨!
    atoc atoi ecvt fcvt strtod wcstol.......
    更讨厌的是:号称OOP的VC里有关图像的函数有100多个,可是没一个能直接实现PHOTOSHOP的菜单里的一个简单特效!!!
    嗨!!
      

  5.   

    to ahao:
    我想你理解错了,我没有说在unicode中有gb等,这两个就不是一种编码,我说的普通双字节内码和unicode不是一回事,普通双字节内码有很多编码方式,包括gb等。