桑枯海 / web / 7.4 Unicode字符集

分享

   

7.4 Unicode字符集

2013-07-29  桑枯海

7.4 Unicode字符集

为了使不同的字符集能够处理好不同的文字和语言,必须满足:

1.      不同时引用多种文字。

2.        不与使用不同字符集的人交换文件。

由于MacPC机都使用不同的字符集,越来越多的人无法遵循以上原则。很明显的是需要一种得到大家的认可并且编码了全世界各种文字的字符集。建立这样的字符集很难,需要对成百上千种语言和文字有细致的了解。要使软件开发商们同意使用这种字符集就更难了。不过这方面的努力一直在进行,终于创建了一个符合要求的字符集��Unicode。而且主要卖方(微软、苹果、IBMSunBe等)正逐步趋向于使用它。XMLUnicode当作自己的默认字符集。

Unicode使用0~65,535的双字节无符号数对每一个字符进行编码。目前已经定义了40,000多个不同的Unicode字符,剩余25,000个空缺留给将来扩展之用。其中大约20,000个字符用于汉字,另外11,000左右的字符用于韩语音节。Unicode0~`255的字符与Latin-1中的一致。

如果在本书中显示所有的Unicode字符,那么除了这些字符表格外,书中将容纳不下别的任何东西。如果需要知道Unicode中不同字符的确定编码,买一册Unicode标准(第二版,ISBN 0-201-48346-9Addison-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-2Latin-3Latin-4中的字符,而且是Basic LatinLatin-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

阿拉伯语,波斯语、PashtoSindhi、库尔德语和早期土耳其语

梵文字母

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
GaroHallamKhasiManipuri
Mizo
NagaMundaRianSantali

Gurmukhi

2560-2687

Punjabi

Gujarati

2686-2815

Gujarati

Oriya

2816-2943

OriyaKhondiSantali

泰米尔语

2944-3071

泰米尔语和Badaga、使用于南印度、斯里兰卡、新加坡和马来西亚部分地区

Telugu

3072-3199

TeluguGondiLambadi

埃纳德语

3200-3327

埃纳德语、Tulu

Malalayam

3326-3455

Malalayam

泰国语

3584-3711

泰国语、KuyLavna、巴利语

老挝语

3712-3839

老挝语

西藏语

3840-4031

喜玛拉雅语包括西藏语、LadakhiLahuli

乔治亚语

4256-4351

乔治亚语,黑海边乔治亚前苏维埃共和国语

Hangul Jamo

4352-4607

朝鲜、韩国音节的字母组成部分

Latin的附加扩展集

7680-7935

标准的Latin字母如EY与可识别的记号组合在一起,除了用于越南语元音中,很少使用

希腊语扩展集

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 5601CNS 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 文件的开始

7.4.1 UTF-8

Unicode使用双字节表示一个字符,因此使用Unicode的英文文本文件大小是使用ASCII码或Latin-1文件的两倍。UTF-8是一个压缩的Unicode版本,使用单个字节表示最常用的字符,即0127ASCII字符,较少见的字符使用三个字节表示,特制是韩国音节和汉字。如果主要使用英文,UTF-8能够将文件压缩为原来的一半。如果主要使用汉语、朝语或者日语,UTF-8会使文件的尺寸增加50%��因此应当谨慎使用UTF-8UTF-8几乎不能处理非罗马文字和非CJK文字,如希腊语、阿拉伯语、古斯拉夫语和希伯来语。

XML处理器在没有被预先通知的情况下假定文本数据是UTF-8格式。这意味着XML处理器能够阅读ASCII码文件,但是使用它处理其他格式的文件像MacRoman 或者 Latin-1会有困难。我们很快就能学会如何在短时间内解决这个问题。

7.4.2 通用字符系统

Unicode因为没有包含足够多的语言和文字而受到批评,特别是亚洲东部的语言。它只定义了中国、日本、朝鲜和古越南使用的80,000象形文字中的20,000个左右。(现代越南语使用一种罗马字母。)

UCS Universal Character System��通用字符系统,也称作ISO 10646,使用四个字节(确切地说是31位)表示一个字符,以给20多亿不同的字符提供足够的空间。这样能容易地覆盖地球上任何一种文字和语言使用的每个字符。而且还可以给每一种语言指定一个完整的字符集,使法语中的“e”不同于英语和德语中的“e”等等。

Unicode一样,UCS定义了许多不同的变种和压缩形式。纯粹的Unicode有时指USC-2,是双字节的UCSUTF-16是一种特别的编码,它把一些UCS字符安排在长度变化的字符串中,在这种方式下UnicodeUCS-2)数据不会改变。

UCS超越Unicode的优点主要是理论方面的。在UCS中实际定义过的字符就是Unicode中已有的字符。但是UCS为以后的字符扩充提供了更多的空间。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    来自: 桑枯海 > 《web》

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>