良渚2020规划图:Unicode字符是什么?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 03:12:17
Unicode字符是什么?

Unicode 是一种重要的交互和显示的通用字符编码标准,它覆盖了美国、欧洲、中东、非洲、印度、亚洲和太平洋的语言,以及古文和专业符号。Unicode 允许交换、处理和显示多语言文本以及公用的专业和数学符号。它希望能够解决多语言的计算,如不同国家的字符标准,但并不是所有的现代或古文都能够获得支持。
Unicode 字符可以适用于所有已知的编码。Unicode 是继 ASCII(美国国家交互信息标准编码)字符码后的一种新字符编码,它为每一个符号定义一个数字和名称,并指定字符和它的数值(码位),以及该值的二进制位表示法,通过一个十六进制数字和前缀(U)定义一个16位的数值,如:U+0041 表示 A,其唯一的名称是 LATIN CAPITAL LETTER A。但请注意:JavaScript 1.3 之前的版本并不支持 Unicode 编码。

Unicode 与 ASCII 和 ISO 的兼容性
Unicode 兼容于 ASCII 字符并被大多数程序所支持,前128个 Unicode 码同 ASCII 码具有同样的字节值;Unicode 字符从 U+0020 到 U+007E 等同与 ASCII 码的 0x20 到 0x7E,不同于支持拉丁字母的7位 ASCII,Unicode 对每个字符进行16位值的编码设置,它允许几万个字符,例如 Unicode 2.0 版包含 38,885 个字符,它也可以进行扩展,如 UTF-16 允许用16位字符组合为一百万或更多的字符,UTF 将编码转换为真实的二进制位。
Unicode 完全兼容于国际标准 ISO/IEC 10646-1; 1993,它是 ISO 10646 的一个子集,并支持用两个八进制数的 ISO UCS-2(Universal Character Set)。JavaScript 1.3 版本对 Unicode 的支持意味着您可以任意地在程序中使用本地的字符以及特殊的科学符号。Unicode 提供了一种标准的方法来编码多语言文本,并且因为它兼容于 ASCII ,您也可以随意使用 ASCII 字符。
您可以在不同的语言中使用 Unicode 来显示字符或专业符号,但这需要一个客户端能够支持 Unicode,例如 Netscape Navigator 4.x,并且客户端还得支持 Unicode 字体以及操作平台的支援。例如 Windows 95 它只支持部分的 Unicode,另外,为了输入非 ASCII 字符,您还得有支持所有 Unicode 字符的输入设备,一个标准的扩展键盘不能够做到这一点,但我们可以用 Unicode 转义序列来输入 Unicode 字符。如果您还需了解 Unicode 更多的信息,请参见 Unicode Consortium Web site 2.0版

Unicode 是一种重要的交互和显示的通用字符编码标准,它覆盖了美国、欧洲、中东、非洲、印度、亚洲和太平洋的语言,以及古文和专业符号。Unicode 允许交换、处理和显示多语言文本以及公用的专业和数学符号。它希望能够解决多语言的计算,如不同国家的字符标准,但并不是所有的现代或古文都能够获得支持。

Unicode 字符可以适用于所有已知的编码。Unicode 是继 ASCII(美国国家交互信息标准编码)字符码后的一种新字符编码,它为每一个符号定义一个数字和名称,并指定字符和它的数值(码位),以及该值的二进制位表示法,通过一个十六进制数字和前缀(U)定义一个16位的数值,如:U+0041 表示 A,其唯一的名称是 LATIN CAPITAL LETTER A。但请注意:JavaScript 1.3 之前的版本并不支持 Unicode 编码。

Unicode 与 ASCII 和 ISO 的兼容性
Unicode 兼容于 ASCII 字符并被大多数程序所支持,前128个 Unicode 码同 ASCII 码具有同样的字节值;Unicode 字符从 U+0020 到 U+007E 等同与 ASCII 码的 0x20 到 0x7E,不同于支持拉丁字母的7位 ASCII,Unicode 对每个字符进行16位值的编码设置,它允许几万个字符,例如 Unicode 2.0 版包含 38,885 个字符,它也可以进行扩展,如 UTF-16 允许用16位字符组合为一百万或更多的字符,UTF 将编码转换为真实的二进制位。

Unicode 完全兼容于国际标准 ISO/IEC 10646-1; 1993,它是 ISO 10646 的一个子集,并支持用两个八进制数的 ISO UCS-2(Universal Character Set)。JavaScript 1.3 版本对 Unicode 的支持意味着您可以任意地在程序中使用本地的字符以及特殊的科学符号。Unicode 提供了一种标准的方法来编码多语言文本,并且因为它兼容于 ASCII ,您也可以随意使用 ASCII 字符。

Unicode 转义序列
您可以在字符直接量中使用 Unicode 转义序列,该转义序列由六个 ASCII 字符组成:\u 加上一个四个数值的十六进制数。如:\u00A9 表示版权符号。JavaScript 里的每一个 Unicode 转义序列由一个字符所对应解释。下表是经常使用的特殊字符和它们的 Unicode 值。

类别 Unicode 值 名称 格式名称
空白(whitespace ) \u0009 制表符 <TAB>
\u000B 垂直制表符 <VT>
\u000C 换页符 <FF>
\u0020 空格 <SP>
行结束符值 \u000A 换行符 <LF>
\u000D 回车符 <CR>
其它 Unicode 转义序列值 \u000b 退格符 <BS>
\u0009 水平制表符 <HT>
\u0022 双引号 "
\u0027 单引号 '
\u005C 反斜杠 /

JavaScript 对 Unicode 转义序列的用法不同于 Java。首先,在 JavaScript 中转义序列并没有解释为一个特殊的字符。例如:在一个字符串中的换行符转义序列在函数被解译前并不会终止该字符串,如果在注释中使用转义序列 JavaScript 将会忽略它。在 Java 中,如果一个转义序列被用于一个单独的注释行,它将被解译为一个 Unicode 字符。对于一个字符串直接量,Java 编译器将首先解译转义序列。例如:如果在 Java 中使用一个换行符(\u000A),它将会终止该字符串,在 Java 中将导致一个错误,因为在字符串直接量中不允许换行,您必须使用 \n 符;而在 JavaScript 中,这两者之间并没有区别。

用 Unicode 显示字符
您可以在不同的语言中使用 Unicode 来显示字符或专业符号,但这需要一个客户端能够支持 Unicode,例如 Netscape Navigator 4.x,并且客户端还得支持 Unicode 字体以及操作平台的支援。例如 Windows 95 它只支持部分的 Unicode,另外,为了输入非 ASCII 字符,您还得有支持所有 Unicode 字符的输入设备,一个标准的扩展键盘不能够做到这一点,但我们可以用 Unicode 转义序列来输入 Unicode 字符。如果您还需了解 Unicode 更多的信息,请参见 Unicode Consortium Web site 2.0版。

Unicode是用两个字节表示每个字符的字符编码方案。国际标准组织(ISO)几乎为每种语言的每个字符和符号在0到65,535(216–1)范围内定义了一个数字(再加上为将来发展保留的一些空余空间)。在所有32位版本的Windows中,部件对象模型(COM)都使用Unicode,它是OLE和ActiveX技术的基础。WindowsNT全部支持Unicode。虽然Unicode和DBCS都是双字节字符,但它们的编码方案完全不同

为了使不同的字符集能够处理好不同的文字和语言,必须满足:
1. 不同时引用多种文字。
2. 不与使用不同字符集的人交换文件。
由于Mac和PC机都使用不同的字符集,越来越多的人无法遵循以上原则。很明显的是需要一种得到大家的认可并且编码了全世界各种文字的字符集。建立这样的字符集很难,需要对成百上千种语言和文字有细致的了解。要使软件开发商们同意使用这种字符集就更难了。不过这方面的努力一直在进行,终于创建了一个符合要求的字符集��Unicode。而且主要卖方(微软、苹果、IBM、Sun、Be等)正逐步趋向于使用它。XML把Unicode当作自己的默认字符集。
Unicode使用0~65,535的双字节无符号数对每一个字符进行编码。目前已经定义了40,000多个不同的Unicode字符,剩余25,000个空缺留给将来扩展之用。其中大约20,000个字符用于汉字,另外11,000左右的字符用于韩语音节。Unicode中0~`255的字符与Latin-1中的一致。
如果在本书中显示所有的Unicode字符,那么除了这些字符表格外,书中将容纳不下别的任何东西。如果需要知道Unicode中不同字符的确定编码,买一册Unicode标准(第二版,ISBN 0-201-48346-9,Addison-Wesley出版)。该书共950页,包括对Unicode 2.0的全部详细说明,还包括Unicode 2.0中定义的所有字符集的图表。还可以在Unicode协会的网址:http://www.unicode.org/http://charts.unicode.org/中发现在线信息。表7-6列出了由Unicode编码的文字,由此可知Unicode的广泛性。每一种文字的字符通常编码在65,536个号码中的一个连续区域内。许多语言都能使用其中某一区域的字符书写(例如,使用古斯拉夫语书写俄语),尽管有一些语言,如克罗地亚语或土耳其语需要混合匹配前4个拉丁文区域中的字符。
表7-6 Unicode文字块
文 字 范 围 目 的
Basic Latin
基本拉丁语 0-127 ASCII码,美式英语
Latin-1 Supplement
拉丁语补充-1 126-255 ISO Latin-1前半部分结合Basic Latin能处理丹麦语、荷兰语、英语、法罗群岛语、佛兰德语、德语、夏威夷语、冰岛语、印度尼西亚语、爱尔兰语、挪威语、葡萄牙语、西班牙语、斯瓦西里语和瑞典语
Latin Extended-A
拉丁文扩展集-A 256-383 该字符块增添了ISO 8859字符集Latin-2、Latin-3、Latin-4中的字符,而且是Basic Latin和Latin-1没有的字符。同它们结合能够编码南非荷兰语、法国布里多尼语、巴斯克语、加泰罗尼亚语、捷克语、世界语、爱沙尼亚语、法语、Friesland语、格陵兰岛语、匈牙利语、拉脱维亚语、立陶宛语、马耳它语、波兰语、普罗旺斯语、罗马尼亚语、吉普塞语、斯洛伐克语、斯洛文尼亚语、土耳其语和威尔士语
Latin Extended-B
拉丁文扩展集-B 383-591 大部分字符用于扩展Latin文字以处理使用非传统文字写的语言,包括许多非洲语言、克罗地亚连字符,与塞尔维亚古斯拉夫字母、中国的拼音和Latin-10中的Sami characters相匹配
IPA扩展字符集 592-687 国际音标字母
间距调节字符 686-767 通常能够改变前面字母发音的小符号
可识别的连接字符 766-879 不独立存在,一般与前面的字母连用(放置在上边)的可识别的记号,如:~、‘and ??
希腊 880-1023 基于ISO 8859-7的现代希腊语,同时提供古埃及语字符
续表
文 字 范 围 目 的
古斯拉夫 1024-1279 基于ISO 8859-5上的语言,俄语和多数斯拉夫语(乌克兰语、Byelorussian等),前苏联的许多非斯拉夫语言(Azerbaijani,Ossetian,卡巴尔德语,Chechen,Tajik等).几种语言(库尔德语,阿布哈西亚语)需要Latin和古斯拉夫字母
美国 1326-1423 美语
希伯来 1424-1535 希伯来语(古典和现代)、依地语、Judezmo、早期美语。
阿拉伯 1536-1791 阿拉伯语,波斯语、Pashto、Sindhi、库尔德语和早期土耳其语
梵文字母 2304-2431 梵语,北印度语,尼泊尔语和印度次大陆语言,包括:
Awadhi,Bagheli,Bhatneri,Bhili,Bihari,BrajBhasha,
Chhattisgarhi,Garhwali,Gondi,Harauti,Ho,Jaipuri,
KachchhiKanauji,Konkani,Kului,Kumaoni,Kurku,Kurukh,
Marwari,Mundari,Newari,Palpa,and Santali
孟加拉语 2432-2559 一种北印度文字,使用于印度的西孟加拉州和孟加拉国的孟加拉语、阿萨姆语、
Daphla、Garo、Hallam、Khasi、Manipuri、
Mizo、Naga、Munda、Rian、Santali
Gurmukhi 2560-2687 Punjabi
Gujarati 2686-2815 Gujarati
Oriya 2816-2943 Oriya、Khondi、Santali
泰米尔语 2944-3071 泰米尔语和Badaga、使用于南印度、斯里兰卡、新加坡和马来西亚部分地区
Telugu 3072-3199 Telugu、Gondi、Lambadi
埃纳德语 3200-3327 埃纳德语、Tulu
Malalayam 3326-3455 Malalayam
泰国语 3584-3711 泰国语、Kuy、Lavna、巴利语
老挝语 3712-3839 老挝语
西藏语 3840-4031 喜玛拉雅语包括西藏语、Ladakhi和Lahuli
乔治亚语 4256-4351 乔治亚语,黑海边乔治亚前苏维埃共和国语
Hangul Jamo 4352-4607 朝鲜、韩国音节的字母组成部分
Latin的附加扩展集 7680-7935 标准的Latin字母如E和Y与可识别的记号组合在一起,除了用于越南语元音中,很少使用
希腊语扩展集 7936-8191 希腊字母与可识别记号的组合,用于正统的希腊语中
通用的标点符号 8192-8303 各种标点符号
上标和下标 8304-8351 普通的上标和下标
货币符号 8352-8399 货币符号,一般在别的地方找不到
用于符号的组合记号 8400-8447 给多个字符做记号
像字母的符号 8446-8527 像字母的符号,如™
数表 8526-8591 分数和罗马数字
箭头符号 8592-8703 箭头符号
数学符号 8704-8959 不常出现的数学运算符
技术杂项 8960-9039 APL编程语言需要的符号和其他各种技术符号
控制图形 9216-9279 ASCII控制字符图形,常用于调试
光学字符识别 9280-9311 在打印支票上的OCR-A(光学字符识别)和MICR(磁性墨水字符识别)符号
续表
文 字 范 围 目 的
附加字符 9312-9471 放在圆和括号中的字母和数字
画方框字符 9472-9599 用于在等间距终端上画方框的字符
块元素 9600-9631 用于DOS和其他用途的等间距终端图形
几何形状 9632-9727 正方形、菱形、三角形等
杂项符号 9726-9983 纸牌、象棋、占卜等
Dingbats 9984-10175 Zapf Dingbat字符
CJK符号和标点 12286-12351 用于中国\日本和韩国的标点符号
平假名 12352-12447 日文字母的草体.
片假名 12446-12543 非草体的日文字母,通常用于西方的外来词汇,像"keyboard"
汉语拼音字母 12544-12591 中国的发音字母表
Hangul Compatibility Jamo 12592-12687 与KSC 5601代码兼容的韩国字符
Kanbun 12686-12703 在日文中用于指示古典中文的阅读顺序的记号
括起来的CJK字母和月份 12800-13055 用圆和括号括起来的Hangul和片假名字符
CJK Compatibility 13056-13311 只用于编码KSC 5601和CNS 11643的字符
统一的CJK象形文字 19966-40959 用于中文、日文和韩文的Han象形文字
Hangul音节 44032-55203 一种韩国音节
Surrogates 55296-57343 目前还不能使用,将来可用于扩展Unicode,使它包括超过百万的字符
个人使用 57344-63743 软件开发者可以在此包含自己的术语,与正在执行的字符不同
CJK兼容性象形文字 63744-64255 为了保持与现有的标准的一致性如KSC 5601,而使用的一些汉字象形文字
字母的表现方式 64256-64335 使用于Latin、美语和希伯来语中的连字和变种
阿拉伯表象形式 64336-65023 各种阿拉伯字符的变种
组合半记号 65056-65071 把跨越多个字符的多个可识别记号连成一个可识别的记号
CJK兼容性形式 65072-65103 用于台湾汉字象形文字
小型变种 65104-65135 用于台湾的ASCII标点符号的小的版本
附加的阿拉伯表象形式 65136-65279 各种阿拉伯字符变种
半宽和全宽形式 65280-65519 能够在中文和日文的不同代码间转换的字符
特殊字符 65520-65535 字节顺序记号和零宽度的非中断性空格,常用于Unicode 文件的开始
UTF-8
Unicode使用双字节表示一个字符,因此使用Unicode的英文文本文件大小是使用ASCII码或Latin-1文件的两倍。UTF-8是一个压缩的Unicode版本,使用单个字节表示最常用的字符,即0到127的ASCII字符,较少见的字符使用三个字节表示,特制是韩国音节和汉字。如果主要使用英文,UTF-8能够将文件压缩为原来的一半。如果主要使用汉语、朝语或者日语,UTF-8会使文件的尺寸增加50%��因此应当谨慎使用UTF-8。UTF-8几乎不能处理非罗马文字和非CJK文字,如希腊语、阿拉伯语、古斯拉夫语和希伯来语。
XML处理器在没有被预先通知的情况下假定文本数据是UTF-8格式。这意味着XML处理器能够阅读ASCII码文件,但是使用它处理其他格式的文件像MacRoman 或者 Latin-1会有困难。我们很快就能学会如何在短时间内解决这个问题。
通用字符系统
Unicode因为没有包含足够多的语言和文字而受到批评,特别是亚洲东部的语言。它只定义了中国、日本、朝鲜和古越南使用的80,000象形文字中的20,000个左右。(现代越南语使用一种罗马字母。)
UCS (Universal Character System)��通用字符系统,也称作ISO 10646,使用四个字节(确切地说是31位)表示一个字符,以给20多亿不同的字符提供足够的空间。这样能容易地覆盖地球上任何一种文字和语言使用的每个字符。而且还可以给每一种语言指定一个完整的字符集,使法语中的“e”不同于英语和德语中的“e”等等。
与Unicode一样,UCS定义了许多不同的变种和压缩形式。纯粹的Unicode有时指USC-2,是双字节的UCS。UTF-16是一种特别的编码,它把一些UCS字符安排在长度变化的字符串中,在这种方式下Unicode(UCS-2)数据不会改变。
UCS超越Unicode的优点主要是理论方面的。在UCS中实际定义过的字符就是Unicode中已有的字符。但是UCS为以后的字符扩充提供了更多的空间。