1.ASCII码到底是什么东西?中文的ASCII是怎么回事?2.Unicode是怎么回事?3的Unicode码怎么是"3100", 中文的Unicode又是怎么回事?3.Unicode和ASCII码的的区别

解决方案 »

  1.   

    4.是否每个汉字或字母都对应唯一的Unicode和ASCII码呢?
      

  2.   

    可以看一下windows核心编程的第二章,有详细的说明
      

  3.   

    你要不要,我有这本书随着M i c r o s o f t公司的Wi n d o w s操作系统在全世界日益广泛的流行,对于软件开发人员来说,
    将目标瞄准国际上的各个不同市场,已经成为一个越来越重要的问题。美国的软件版本比国际
    版本提前6个月推向市场,这曾经是个司空见惯的现象。但是,由于各国对Wi n d o w s操作系统
    提供了越来越多的支持,因此就更加容易为国际市场生产各种应用软件,从而缩短了软件的美
    国版本与国际版本推出的时间间隔。
    Wi n d o w s操作系统始终不逾地提供各种支持,以帮助软件开发人员进行应用程序的本地化
    工作。应用软件可以从各种不同的函数中获得特定国家的信息,并可观察控制面板的设置,以
    确定用户的首选项。Wi n d o w s甚至支持不同的字体,以适应应用的需要。
    之所以将这一章放在本书的开头,是因为考虑到U n i c o d e是开发任何应用程序时要采用的
    基本步骤。本书的每一章中几乎都要讲到关于U n i c o d e的问题,而且书中给出的所有示例应用
    程序都是“用U n i c o d e实现的”。如果你为Microsoft Windows 2000或Microsoft Windows CE开发
    应用程序,你应该使用U n i c o d e进行开发。如果你为Microsoft Windows 98开发应用程序,你必
    须对某些问题作出决定。本章也要讲述Windows 98的有关问题。
    2.1 字符集
    软件的本地化要解决的真正问题,实际上就是如何来处理不同的字符集。多年来,许多人
    一直将文本串作为一系列单字节字符来进行编码,并在结尾处放上一个零。对于我们来说,这
    已经成了习惯。当调用s t r l e n函数时,它在以0结尾的单字节字符数组中返回字符的数目。
    问题是,有些文字和书写规则(比如日文中的汉字就是个典型的例子)的字符集中的符号
    太多了,因此单字节(它提供的符号最多不能超过2 5 6个)是根本不敷使用的。为此出现了双
    字节字符集(D B C S),以支持这些文字和书写规则。
    2.1.1 单字节与双字节字符集
    在双字节字符集中,字符串中的每个字符可以包含一个字节或包含两个字节。例如,日文
    中的汉字,如果第一个字符在0 x 8 1与0 x 9 F之间,或者在0 x E 0与0 x F C之间,那么就必须观察下
    一个字节,才能确定字符串中的这个完整的字符。使用双字节字符集,对于程序员来说简直是
    个很大的难题,因为有些字符只有一个字节宽,而有些字符则是两个字节宽。
    如果只是调用s t r l e n函数,那么你无法真正了解字符串中究竟有多少字符,它只能告诉你
    到达结尾的0之前有多少个字节。A N S I的C运行期库中没有配备相应的函数,使你能够对双字
    节字符集进行操作。但是, Microsoft Visual C++的运行期库却包含许多函数,如_ m b s l e n ,它可
    以用来操作多字节(既包括单字节也包括双字节)字符串。
    为了帮助你对D B C S字符串进行操作,Wi n d o w s提供了下面的一组帮助函数(见表2 - 1 )。
    前两个函数CharNext 和Char Prev 允许前向或逆向遍历DBCS 字符串,方法是每次一个字
    符。第三个函数IsDBCSLeadByte, 在字节返回到一个两字字节符的第一个字节时将返回
    T R U E。
    表2-1 对D B C S字符串进行操作的帮助函数
    函数描述
    PTSTR CharNext(PCTSTR pszCurrentChar); 返回字符串中的下一个字符的地址
    PTSTR CharPrev(PCTSTR pszStart,PCTSTR 返回字符串中的上一个字符的地址
    p s z C u r r e n t C h a r );
    BOOL IsDBCSLeadByteTRUE(BYTE bTestChar); 如果该字节是DBCS字符的第一个字节,则返回
    尽管这些函数使得我们对D B C S的操作更容易,但还需要,一个更好的方法让我们来看
    看U n i c o d e。
    2.1.2 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个代码点是保留供个人使用的。
    12计计第一部分程序员必读
    下载
    代码点是字符集中符号的位置。
    2.2 为什么使用U n i c o d e
    当开发应用程序时,当然应该考虑利用U n i c o d e的优点。即使现在你不打算对应用程序进
    行本地化,开发时将U n i c o d e放在心上,肯定可以简化将来的代码转换工作。此外, U n i c o d e还
    具备下列功能:
    • 可以很容易地在不同语言之间进行数据交换。
    • 使你能够分配支持所有语言的单个二进制. e x e文件或D L L文件。
    • 提高应用程序的运行效率(本章后面还要详细介绍)。
      

  4.   

    UNICODE 简介
    如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,
    那么你一定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 编写针对上述
    国家和地区的用户的程序时,如果你想让自己的应用程序得到更广泛的用户,那
    么必须考虑代码 UNICODE 的兼容性,也就是说它既在 ASCII 模式下运行 ,也
    能在UNICODE 模式下运行。本文将介绍 UNICODE 的一些基本编程知识,澄清很
    多人(包括我自己)在这个问题上存在的模糊认识。对于任何使用 Visual C++ 
    和/或 MFC 编程的人来说,这篇文章肯定值得一读。UNICODE到底是什么?UNICODE是目前用来解决ASCII码256个字符限制问题的一种比较流行的解决方案。
    大家知道,ASCII 字符集只有256个字符,用 0-255 之间的数字来表示。包括大
    小写字母、数字以及少数特殊字符;如标点符号、货币符号等。对于大多数拉丁
    语言来说,这些字符已经够用。但是,许多亚洲和东方语言所用的字符远远不止
    256个字符。有些超过千个。人们为了突破 ASCII 码字符数的限制,试图用一种
    简单的方法来针对超过256个字符的语言编写计算机程序。于是 UNICODE 应运而
    生。UNICODE 通过用双字节来表示一个字符,从而在更大范围内将数字代码映射
    到多种语言的字符集。
      

  5.   

    以前的帖子好多
    http://search.csdn.net/Expert/topic/2426/2426428.xml?temp=.343136
    http://search.csdn.net/Expert/topic/1603/1603099.xml?temp=.8472864
      

  6.   

    引................别说得太复杂,其实就一句话,本来是一个字节(8bit)来表示一个字符(这对老美够用了,但对中国之类的国家显然不够用,所以只能用两个字符来表示实际上的一个字符),现在为了简单起见,一律用2个字节来表示一个字符,这就是Unicode.
    3000年,火星人来了,他们的文字更复杂,得用4个字节表示一个字符,于是地球人跟火星人协商,决定采用新的字符标准-doubleUnicode(32bit)-来统一太阳系内的字符编码.
    ....经典,呵呵