Unicode字符集

硕士研究生课程

山东师范大学信息科学与工程学院

回顾: 下列汉字不在GB2312-80的6763个汉字中: 但在CJK的20902个汉字(4E00—9FA5)中:

Unicode字符集

róng liào mín yù 镕 瞭 旻 彧 gān 玕 jùn 珺 yīn 愔

shēn jué 屾 珏 yūn 赟 jian 篯

回顾

yǎn

What does the term "CJK" mean?

It is a commonly used acronym for "Chinese, Japanese, and Korean". The term "CJK character" generally refers to "Chinese characters", or more specifically, the Chinese (= Han) ideographs used in the writing systems of the Chinese, Japanese, and Korean languages.

yǎn

在CJK的20902个汉字中

不在CJK的20902个汉字中 在GBK的21003个汉字中

3 4 山东师范大学信息学院研究生课程 2009年10月21日星期三

山东师范大学信息学院研究生课程 2009年10月21日星期三

Who is responsible for future CJK characters?

The development and extension of the CJK characters is being done by the Ideographic Rapporteur Group (IRG), which includes official representatives of China, Hong Kong (SAR), Macao (SAR), Singapore, Japan, South Korea, North Korea, Taiwan and Vietnam, plus a representative from the Unicode consortium. For more information, see the IRG home page. The IRG is very carefully cataloging, reviewing, and assessing CJK characters for inclusion into the standard. The only real limitation on the number of CJK characters in the standard is the ability of this group to process them, because the characters are increasingly obscure (no person — living or deceased — knows more than a fraction of the set already encoded). 5

山东师范大学信息学院研究生课程 2009年10月21日星期三

GBK字符集不够用了

全拼中用GBK字符集可输入“契”却不能输入“

而用微软拼音的 “大字符集”既不能输入“契”也不能输入“ ”

如何输入“

山东师范大学信息学院研究生课程 2009年10月21日星期三

”字?

6

CJK扩展A

《现代汉语辞海》

《现代汉语辞海》编委会编 印刷工业出版社,2002年1月第1版 第847页: (jié)字的释义:廉洁。

国际标准化组织(ISO)在 ISO/IEC 10646-1:2000 的基本平面(简称Unicode) 编入了GB18030建议的汉字,其中超出 GBK部分的6582个汉字,又称为扩展A。

如何输入“

”字?

0x4DB5-0x3400+1=0x19B6=6582

山东师范大学信息学院研究生课程 2009年10月21日星期三 8

CJK扩展A

”字在CJK扩展A中

(jié)字的Unicode码是36c3

国际标准化组织(ISO)在 ISO/IEC 10646-1:2000 的基本平面(简称Unicode) 编入了GB18030建议的汉字,其中超出 GBK部分的6582个汉字,又称为扩展A。

0x4DB5-0x3400+1=0x19B6=6582

山东师范大学信息学院研究生课程 2009年10月21日星期三

10

何谓字符集

• 字符集就是字符内码到字符的 表现形式之间的映射的集合。

• ASCII字符A是就内码0x41的表现形 式,所以在很多

程序语言中,字符变 量和整型变量仅存在一念之差。

设定字符集

在HTML中按如下方式规定代码页:

• 字符集名称是大小写不敏感的,所以 GB2312也可以写作gb2312或Gb2312。

11 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三 12

HTML示例

此处的“gb2312”指“简体中文”,并不严格指“gb2312” 将此处的“gb2312”换成“big5”或“utf-8”会怎样?

XML与字符集

因为象‘<’、‘>’、‘/’、‘[’、‘]’等符号,本来是XML规范 中所保留的符号。而双字节编码的汉字,有可能出现这种情 况,如某个汉字的编码A是xy,而y恰巧是‘<’的编码。假如 XML软件不知道文档的字符集,那么XML分析器就会错误地 将汉字A的低字节y当作是某个标记的开始符号。所以XML分 析器必须知道XML文档的编码方式。只有知道它所属的字符 集,才不会出现将某个完整的文字编码断开为单个字节,从而 导致某些字节解码成错误的字符。

赛迪网讯 3月11日消息

赛迪网讯 3月11日消息,《福布斯》杂志日前评出了其年度全球富豪榜,微软公 司董事长比尔.盖茨凭借其465亿美元的家产连续11年荣登该排行榜榜首。

据该排行榜显示,此次入围的亿万富翁共有691人,其资产总和达到了2.2万 亿美元。这些富翁分别来自全球47个国家,其中美国有69人,欧洲有38人。

统计结果显示,尽管盖茨的个人财产与前一年的466亿美元相比减少0.2%, 但仍高居该排行榜的榜首。紧随其后的仍是波克夏.哈萨威公司(Berkshire Hathaway Inc.)总裁华伦.巴菲特(Warren Buffett),其个人财产比去年的440亿美元 增长了2.6%。

在该排行榜中,排名上升速度最快的莫过于米塔尔钢铁公司(Mittal Steel )的首席执行官拉克希米.米塔尔(Lakshmi Mittal),其个人财产从此前的188亿 美元猛增至250亿美元,排名跃居至第三。

据《福布斯》介绍,该排行榜以各富豪在2005年2月11日的财产为衡量标准。

13

山东师范大学信息学院研究生课程 2009年10月21日星期三

XML不再使用HTML等的字符猜测方式处理文 档,它要求文档以明确的方式指定其所使用的字符集 (即编码方式)。

在XML中,使用一个声明指令表示字符编码:

14 山东师范大学信息学

院研究生课程 2009年10月21日星期三

美国信息交换标准码 (ASCII)

• 美国信息交换标准码 (ASCII) US-ASCII(ISO 646) 一种标准的单字节字符编码方案,用于基于文本的 数据。ASCII 码使用指定的 7 位或 8 位二进制 数组合来表示 128 或 256 个可能的字符。标准 ASCII 码使用 7 位二进制数来表示所有的大写 和小写字母、数字 0 到 9、标点符号以及在美 国英语中使用的特殊控制字符。目前,大多数基 于 x86 的系统都支持使用扩展(或“高”)ASCII。 扩展 ASCII 码允许将每个字符的第 8 位用于确 定附加的 128 个特殊符号字符、外语字母和图 形符号。 15

山东师范大学信息学院研究生课程 2009年10月21日星期三

常用字符集简介 1. ISO8859系列 2. GB2312字符集 3. Unicode字符集

16 山东师范大学信息学院研究生课程 2009年10月21日星期三

ISO8859系列

• ISO8859包括诸如ISO8859-1, ISO8859-2之类的一系列字符集。 • ISO8859都是8位的字符集,0~0x7F 仍与ASCII字符集保持兼容,大于0x7F 的是各种拉丁字符或欧洲字符的扩展。

汉字字符集

GB2312(1980年)一共收录了7445个字符,包括6763个 汉字和682个其它符号。汉字区的内码范围高字节从B0F7,低字节从A1-FE,占用的码位是72*94=6768。其中有 5个空位是D7FA-D7FE。 GB2312支持的汉字太少。1995年的汉字扩展规范 GBK1.0收录了21886个符号,它分为汉字区和图形符号区。 汉字区包括21003个字符。

1993年国际标准化组织发布了ISO/IEC 10646-1《信息技术通用多八位编码字符集第一部 分体系结构与基本多文种平面》。我国等同采用此标准制定了GB 13000.1-1993。该标准采用 了全新的多文种编码体系,收录了中、日、韩20902个汉字,是编码体系未来发展方向。

2000年的GB18030是取代GBK1.0的正式国家标准。该 标准收录了27484(=20902+6582)个汉字,同时还收录了藏 文、蒙文、维吾尔文等主要的少数民族文字。总编码空间超

17 山东师范大学信息学院研究生课程 2009年10月21日星期三

过150万个码位,为解决人名、地名用字问题提供了方案,为汉字研 究、古籍整理等领域提供了统一的信息平台基础 18

山东师范大学信息学院研究生课程 2009年10月21日星期三

GB2312字符集

“GB2312”是指1980年的一个标准《中华人民共和国国家 标准 信息交换用汉字编码字符集 基本集 GB 2312-80》。这 个标准用两个数来编码汉字和中文符号。第一个数称为 “区”,第二个数称为“位”。所以也称为区位码。1-9区是中文 符号,16-55区是一级汉字,56-87区是二级汉字。现在 Windows也还有区位输入法,例如输入1601得到“啊”。 “啊”的区位码是1601,写成16进制是0x10,0x01。这和计算 机广泛使用的ASCII编码冲突。为了兼容00-

7f的ASCII编 码,在区位码的高、低字节上分别加上A0。这样“啊”的编码 就成为B0A1。加过两个A0的编码也称为GB2312内码。 GB2312标准所产生的字符集,如果当前字节(8 bit)小于 0x80,则仍当它为英文字符;如果它大于等于0x80,则它和 紧接着它的下一个字节构成一个汉字字符。 GB2312字符集包含6763=3755+3008个常用简体汉字和其 它汉字中的特殊符号。

19 山东师范大学信息学院研究生课程 2009年10月21日星期三

双字节字符集(DBCS)

从ASCII、GB2312、GBK到GB18030, 这些编码方法是向下兼容的,即同一个字符在 这些方案中总是有相同的编码,后面的标准支 持更多的字符。在这些编码中,英文和中文可 以统一地处理。 GB2312、GBK到GB18030都属于双字节 字符集 (DBCS)。区分中文编码的方法是高字 节的最高位不为0。

20 山东师范大学信息学院研究生课程 2009年10月21日星期三

DBCS字符的解析

GB2312的原文是区位码,从区位码到内码,需 要在高字节和低字节上分别加上A0。 GB2312的两个字节的最高位都是1。但符合这个 条件的码位只有128*128=16384个。所以GBK和 GB18030的低字节最高位可能不是1。不过这不影响 DBCS字符流的解析:在读取DBCS字符流时,只要遇 到高位为1的字节,就可以将下两个字节作为一个双 字节编码,而不用管低字节的高位是什么。

什么是Unicode?

Unicode的全称是“ Universal Multiple-Octet Coded Character Set ,通用多八位编码字符集 ”, 简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。 《通用多八位编码字符集 (UCS) 》即国际标准 ISO/IEC10646.1-1993,用于世界上各种语言的 书面形式以及附加符号的表示、传输、交换、 处理、存储、输入及显现。

21 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三

22

什么是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

什么是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

23 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三

24

什么是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

什么

是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

25 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三

26

什么是Unicode(续)

历史上, 有两个独立的, 创立单一字符集的尝试。 一个是国际标准化组织(ISO)的 ISO 10646 项目, 另 一个是由(一开始大多是美国的)多语言软件制造商组成 的协会组织的 Unicode 项目。 幸运的是, 1991年前后, 两个项目的参与者都认识到, 世界不需要两个不同的单一字符集。 它们合并双方的 工作成果, 并为创立一个单一编码表而协同工作。 两个 项目仍都存在并独立地公布各自的标准, 但 Unicode 联 盟和 ISO/IEC JTC1/SC2 都同意保持 Unicode 和 ISO 10646 标准的码表兼容, 并紧密地共同调整任何未来的 扩展。 Unicode协会2006年7月推出Unicode 5.0版本。

27 山东师范大学信息学院研究生课程 2009年10月21日星期三

国际标准 ISO 10646

国际标准 ISO 10646 定义了 通用字符集 (Universal Character Set, UCS)。 UCS 是所有 其他字符集标准的一个超集。 UCS 包含了用于 表达所有已知语言的字符。它保证与其他字符 集是双向兼容的。 就是说, 如果将任何文本字符 串翻译到 UCS格式, 然后再翻译回原编码, 不会 丢失任何信息。 UCS的主要目标是提供一个“通用字符

集”,这个通用字符集包括世界上所有的 语言,字母和文字。 在UCS字符集中,不光“I”是字母, “我”也是字母。

28

山东师范大学信息学院研究生课程 2009年10月21日星期三

The Unicode Standard is very closely aligned with the international standard ISO/IEC 10646 (also known as the Universal Character Set, or UCS, for short). Close cooperation and formal liaison between the committees has ensured that all additions to either standard are coordinated and kept in synch, so that the two standards maintain exactly the same character repertoire and encoding. Version 4.0 of the Unicode Standard is code-for-code identical to ISO/IEC 10646:2003. This code-for-code identity is true for all encoded characters in the two standards, including the East Asian (Han) ideographic characters. Subsequent versions of the Unicode Standard track additional parts and amendments to ISO/IEC 10646. The Unicode encoding forms correspond exactly to forms of use and transformation formats also defined in ISO/IEC 10646. UTF-8 and UTF-16 are defined in Annexes to ISO/IEC 10646. And UTF-32 corresponds to the four-octet form UCS4 of ISO/IEC 10646.

Unicode and ISO/IEC 10646

UCS-2和UCS-4

• 存在好几种

将一串字符表示为一串字节的方法。 最显而易见的两种方法是将 Unicode 文本存 储为 2 个 或 4 个字节(实际上只用了31 位,最高位必须为0)序列的串。 这两种方法 的正式名称分别为 UCS-2 和 UCS-4。

UCS-2有216=65536个码位, UCS-4有231=2147483648个码位。

• 作为 Unicode 标准一部分的国际标准字符集 参考。UCS 标准目前使用最广泛的的版本是 UCS-2,该版本指定的 16 位字符数值已作为 世界上大多数语言的编码标准而被接受,并得 到了承认。 30

山东师范大学信息学院研究生课程 2009年10月21日星期三

编码空间的分配

UCS-4根据最高位为0的最高字节分成27=128 个group。每个group再根据次高字节分为256个 plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只 是最后一个字节不同,其余都相同。 group 0的plane 0被称作Basic Multilingual Plane, 即BMP(基本多语言面)。或者说UCS-4 中,高两个字节为0的码位被称作BMP。 将UCS-4的BMP去掉前面的两个零字节就得 到了UCS-2。在UCS-2的两个字节前加上两个零字 节,就得到了UCS-4的BMP。

基本多语言面(BMP)

ISO 10646 定义了一个 31 位的字符集。 然而, 在这巨大的编码空间中, 迄今为止只分 配了前 65534 个码位 (0x0000 到 0xFFFD)。 这个 UCS 的 16位子集称为 基本多语言面 (Basic Multilingual Plane, BMP)。 新的字符仍源源不断地加入到 BMP 中, 但已经存在的字符是稳定的且不会再改变了。 将被编码在 16 位 BMP 以外的字符都属 于非常特殊的字符(比如象形文字), 且只有专 家在历史和科学领域里才会用到它们。

32 山东师范大学信息学院研究生课程 2009年10月21日星期三

基本多文种平面的组编码为 00H。UCS 规定当正 则形式的组、平面编码为 00H 时可以省略,因此安排 在基本多文种平面上的字符可用两个字节的二进制数 来表示,形成双八位编码字符集,记作 UCS-2。 基本多文种平面分成 A、I、O、R 四个区。 A 区:代码位置从 0000 ~ 4DFF,共 19903 个字位。 此区用于字母文字、音节文字以及各种符号的编码, 其中 0000 ~ 001F 和 007E ~ 009F 保留用于控制字符。 I 区:代码位置从 4E00 ~ 9FFF,共 20992 个字位。 此区用于中、日、韩(CJK)统一的表意文字,即中 国、日本、韩国等三国汉字的编码。 O 区:代码位置从 A000 ~ DFFF,共 16384 个字 位。此区目前未用,留作未来的标准化。 R 区:代码位置从 E000 ~ FFFD,共 8190 个字位。 此区是限制使用区,用于专用字符、变形显现形式和 兼容字符的编码。

33 山东师范大学信息学院研究生课程 2009年10月21日星期三

Unicode编码

UCS 不仅给每个字符分配一个代码, 而 且赋予了一个正式的名字。 表示一个 UCS

或 Unicode 值的十六进制数, 通常在前面加 上 "U+", 就象 U+0041 代表字符"拉丁大写 字母A"。 UCS 字符 U+0000 到 U+007F 与 US-ASCII(ISO 646) 是一致的, U+0000 到 U+00FF 与 ISO 8859-1(Latin-1) 也是一致的。

文 GB Unicode

CEC4 6587

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

CJK characters

Unicode supports over 70,000 CJK characters right now, and work is underway to encode further additions. The International Standard ISO/IEC 10646 and the Unicode Standard are completely synchronized in repertoire and content. And that means that Unicode has the same repertoire as GB 18030, since that also is synchronized with ISO 10646 — although with a different ordering and byte format.

Unicode 字符有多少?

216=65536个字符

冷玉龙 1994年《中华字海》 86000 字

35 山东师范大学信息学院研究生课程 2009年10月21日星期三

Question & Answer

硕士研究生课程

山东师范大学信息科学与工程学院

回顾: 下列汉字不在GB2312-80的6763个汉字中: 但在CJK的20902个汉字(4E00—9FA5)中:

Unicode字符集

róng liào mín yù 镕 瞭 旻 彧 gān 玕 jùn 珺 yīn 愔

shēn jué 屾 珏 yūn 赟 jian 篯

回顾

yǎn

What does the term "CJK" mean?

It is a commonly used acronym for "Chinese, Japanese, and Korean". The term "CJK character" generally refers to "Chinese characters", or more specifically, the Chinese (= Han) ideographs used in the writing systems of the Chinese, Japanese, and Korean languages.

yǎn

在CJK的20902个汉字中

不在CJK的20902个汉字中 在GBK的21003个汉字中

3 4 山东师范大学信息学院研究生课程 2009年10月21日星期三

山东师范大学信息学院研究生课程 2009年10月21日星期三

Who is responsible for future CJK characters?

The development and extension of the CJK characters is being done by the Ideographic Rapporteur Group (IRG), which includes official representatives of China, Hong Kong (SAR), Macao (SAR), Singapore, Japan, South Korea, North Korea, Taiwan and Vietnam, plus a representative from the Unicode consortium. For more information, see the IRG home page. The IRG is very carefully cataloging, reviewing, and assessing CJK characters for inclusion into the standard. The only real limitation on the number of CJK characters in the standard is the ability of this group to process them, because the characters are increasingly obscure (no person — living or deceased — knows more than a fraction of the set already encoded). 5

山东师范大学信息学院研究生课程 2009年10月21日星期三

GBK字符集不够用了

全拼中用GBK字符集可输入“契”却不能输入“

而用微软拼音的 “大字符集”既不能输入“契”也不能输入“ ”

如何输入“

山东师范大学信息学院研究生课程 2009年10月21日星期三

”字?

6

CJK扩展A

《现代汉语辞海》

《现代汉语辞海》编委会编 印刷工业出版社,2002年1月第1版 第847页: (jié)字的释义:廉洁。

国际标准化组织(ISO)在 ISO/IEC 10646-1:2000 的基本平面(简称Unicode) 编入了GB18030建议的汉字,其中超出 GBK部分的6582个汉字,又称为扩展A。

如何输入“

”字?

0x4DB5-0x3400+1=0x19B6=6582

山东师范大学信息学院研究生课程 2009年10月21日星期三 8

CJK扩展A

”字在CJK扩展A中

(jié)字的Unicode码是36c3

国际标准化组织(ISO)在 ISO/IEC 10646-1:2000 的基本平面(简称Unicode) 编入了GB18030建议的汉字,其中超出 GBK部分的6582个汉字,又称为扩展A。

0x4DB5-0x3400+1=0x19B6=6582

山东师范大学信息学院研究生课程 2009年10月21日星期三

10

何谓字符集

• 字符集就是字符内码到字符的 表现形式之间的映射的集合。

• ASCII字符A是就内码0x41的表现形 式,所以在很多

程序语言中,字符变 量和整型变量仅存在一念之差。

设定字符集

在HTML中按如下方式规定代码页:

• 字符集名称是大小写不敏感的,所以 GB2312也可以写作gb2312或Gb2312。

11 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三 12

HTML示例

此处的“gb2312”指“简体中文”,并不严格指“gb2312” 将此处的“gb2312”换成“big5”或“utf-8”会怎样?

XML与字符集

因为象‘<’、‘>’、‘/’、‘[’、‘]’等符号,本来是XML规范 中所保留的符号。而双字节编码的汉字,有可能出现这种情 况,如某个汉字的编码A是xy,而y恰巧是‘<’的编码。假如 XML软件不知道文档的字符集,那么XML分析器就会错误地 将汉字A的低字节y当作是某个标记的开始符号。所以XML分 析器必须知道XML文档的编码方式。只有知道它所属的字符 集,才不会出现将某个完整的文字编码断开为单个字节,从而 导致某些字节解码成错误的字符。

赛迪网讯 3月11日消息

赛迪网讯 3月11日消息,《福布斯》杂志日前评出了其年度全球富豪榜,微软公 司董事长比尔.盖茨凭借其465亿美元的家产连续11年荣登该排行榜榜首。

据该排行榜显示,此次入围的亿万富翁共有691人,其资产总和达到了2.2万 亿美元。这些富翁分别来自全球47个国家,其中美国有69人,欧洲有38人。

统计结果显示,尽管盖茨的个人财产与前一年的466亿美元相比减少0.2%, 但仍高居该排行榜的榜首。紧随其后的仍是波克夏.哈萨威公司(Berkshire Hathaway Inc.)总裁华伦.巴菲特(Warren Buffett),其个人财产比去年的440亿美元 增长了2.6%。

在该排行榜中,排名上升速度最快的莫过于米塔尔钢铁公司(Mittal Steel )的首席执行官拉克希米.米塔尔(Lakshmi Mittal),其个人财产从此前的188亿 美元猛增至250亿美元,排名跃居至第三。

据《福布斯》介绍,该排行榜以各富豪在2005年2月11日的财产为衡量标准。

13

山东师范大学信息学院研究生课程 2009年10月21日星期三

XML不再使用HTML等的字符猜测方式处理文 档,它要求文档以明确的方式指定其所使用的字符集 (即编码方式)。

在XML中,使用一个声明指令表示字符编码:

14 山东师范大学信息学

院研究生课程 2009年10月21日星期三

美国信息交换标准码 (ASCII)

• 美国信息交换标准码 (ASCII) US-ASCII(ISO 646) 一种标准的单字节字符编码方案,用于基于文本的 数据。ASCII 码使用指定的 7 位或 8 位二进制 数组合来表示 128 或 256 个可能的字符。标准 ASCII 码使用 7 位二进制数来表示所有的大写 和小写字母、数字 0 到 9、标点符号以及在美 国英语中使用的特殊控制字符。目前,大多数基 于 x86 的系统都支持使用扩展(或“高”)ASCII。 扩展 ASCII 码允许将每个字符的第 8 位用于确 定附加的 128 个特殊符号字符、外语字母和图 形符号。 15

山东师范大学信息学院研究生课程 2009年10月21日星期三

常用字符集简介 1. ISO8859系列 2. GB2312字符集 3. Unicode字符集

16 山东师范大学信息学院研究生课程 2009年10月21日星期三

ISO8859系列

• ISO8859包括诸如ISO8859-1, ISO8859-2之类的一系列字符集。 • ISO8859都是8位的字符集,0~0x7F 仍与ASCII字符集保持兼容,大于0x7F 的是各种拉丁字符或欧洲字符的扩展。

汉字字符集

GB2312(1980年)一共收录了7445个字符,包括6763个 汉字和682个其它符号。汉字区的内码范围高字节从B0F7,低字节从A1-FE,占用的码位是72*94=6768。其中有 5个空位是D7FA-D7FE。 GB2312支持的汉字太少。1995年的汉字扩展规范 GBK1.0收录了21886个符号,它分为汉字区和图形符号区。 汉字区包括21003个字符。

1993年国际标准化组织发布了ISO/IEC 10646-1《信息技术通用多八位编码字符集第一部 分体系结构与基本多文种平面》。我国等同采用此标准制定了GB 13000.1-1993。该标准采用 了全新的多文种编码体系,收录了中、日、韩20902个汉字,是编码体系未来发展方向。

2000年的GB18030是取代GBK1.0的正式国家标准。该 标准收录了27484(=20902+6582)个汉字,同时还收录了藏 文、蒙文、维吾尔文等主要的少数民族文字。总编码空间超

17 山东师范大学信息学院研究生课程 2009年10月21日星期三

过150万个码位,为解决人名、地名用字问题提供了方案,为汉字研 究、古籍整理等领域提供了统一的信息平台基础 18

山东师范大学信息学院研究生课程 2009年10月21日星期三

GB2312字符集

“GB2312”是指1980年的一个标准《中华人民共和国国家 标准 信息交换用汉字编码字符集 基本集 GB 2312-80》。这 个标准用两个数来编码汉字和中文符号。第一个数称为 “区”,第二个数称为“位”。所以也称为区位码。1-9区是中文 符号,16-55区是一级汉字,56-87区是二级汉字。现在 Windows也还有区位输入法,例如输入1601得到“啊”。 “啊”的区位码是1601,写成16进制是0x10,0x01。这和计算 机广泛使用的ASCII编码冲突。为了兼容00-

7f的ASCII编 码,在区位码的高、低字节上分别加上A0。这样“啊”的编码 就成为B0A1。加过两个A0的编码也称为GB2312内码。 GB2312标准所产生的字符集,如果当前字节(8 bit)小于 0x80,则仍当它为英文字符;如果它大于等于0x80,则它和 紧接着它的下一个字节构成一个汉字字符。 GB2312字符集包含6763=3755+3008个常用简体汉字和其 它汉字中的特殊符号。

19 山东师范大学信息学院研究生课程 2009年10月21日星期三

双字节字符集(DBCS)

从ASCII、GB2312、GBK到GB18030, 这些编码方法是向下兼容的,即同一个字符在 这些方案中总是有相同的编码,后面的标准支 持更多的字符。在这些编码中,英文和中文可 以统一地处理。 GB2312、GBK到GB18030都属于双字节 字符集 (DBCS)。区分中文编码的方法是高字 节的最高位不为0。

20 山东师范大学信息学院研究生课程 2009年10月21日星期三

DBCS字符的解析

GB2312的原文是区位码,从区位码到内码,需 要在高字节和低字节上分别加上A0。 GB2312的两个字节的最高位都是1。但符合这个 条件的码位只有128*128=16384个。所以GBK和 GB18030的低字节最高位可能不是1。不过这不影响 DBCS字符流的解析:在读取DBCS字符流时,只要遇 到高位为1的字节,就可以将下两个字节作为一个双 字节编码,而不用管低字节的高位是什么。

什么是Unicode?

Unicode的全称是“ Universal Multiple-Octet Coded Character Set ,通用多八位编码字符集 ”, 简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。 《通用多八位编码字符集 (UCS) 》即国际标准 ISO/IEC10646.1-1993,用于世界上各种语言的 书面形式以及附加符号的表示、传输、交换、 处理、存储、输入及显现。

21 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三

22

什么是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

什么是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

23 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三

24

什么是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

什么

是Unicode?

ASCII、GB2312、GBK到GB18030的编码 方法是向下兼容的。而Unicode只与ASCII兼容 (更准确地说,是与ISO-8859-1兼容),与GB 码不兼容。

文 GB Unicode

CEC4 6587

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

25 山东师范大学信息学院研究生课程 2009年10月21日星期三 山东师范大学信息学院研究生课程 2009年10月21日星期三

26

什么是Unicode(续)

历史上, 有两个独立的, 创立单一字符集的尝试。 一个是国际标准化组织(ISO)的 ISO 10646 项目, 另 一个是由(一开始大多是美国的)多语言软件制造商组成 的协会组织的 Unicode 项目。 幸运的是, 1991年前后, 两个项目的参与者都认识到, 世界不需要两个不同的单一字符集。 它们合并双方的 工作成果, 并为创立一个单一编码表而协同工作。 两个 项目仍都存在并独立地公布各自的标准, 但 Unicode 联 盟和 ISO/IEC JTC1/SC2 都同意保持 Unicode 和 ISO 10646 标准的码表兼容, 并紧密地共同调整任何未来的 扩展。 Unicode协会2006年7月推出Unicode 5.0版本。

27 山东师范大学信息学院研究生课程 2009年10月21日星期三

国际标准 ISO 10646

国际标准 ISO 10646 定义了 通用字符集 (Universal Character Set, UCS)。 UCS 是所有 其他字符集标准的一个超集。 UCS 包含了用于 表达所有已知语言的字符。它保证与其他字符 集是双向兼容的。 就是说, 如果将任何文本字符 串翻译到 UCS格式, 然后再翻译回原编码, 不会 丢失任何信息。 UCS的主要目标是提供一个“通用字符

集”,这个通用字符集包括世界上所有的 语言,字母和文字。 在UCS字符集中,不光“I”是字母, “我”也是字母。

28

山东师范大学信息学院研究生课程 2009年10月21日星期三

The Unicode Standard is very closely aligned with the international standard ISO/IEC 10646 (also known as the Universal Character Set, or UCS, for short). Close cooperation and formal liaison between the committees has ensured that all additions to either standard are coordinated and kept in synch, so that the two standards maintain exactly the same character repertoire and encoding. Version 4.0 of the Unicode Standard is code-for-code identical to ISO/IEC 10646:2003. This code-for-code identity is true for all encoded characters in the two standards, including the East Asian (Han) ideographic characters. Subsequent versions of the Unicode Standard track additional parts and amendments to ISO/IEC 10646. The Unicode encoding forms correspond exactly to forms of use and transformation formats also defined in ISO/IEC 10646. UTF-8 and UTF-16 are defined in Annexes to ISO/IEC 10646. And UTF-32 corresponds to the four-octet form UCS4 of ISO/IEC 10646.

Unicode and ISO/IEC 10646

UCS-2和UCS-4

• 存在好几种

将一串字符表示为一串字节的方法。 最显而易见的两种方法是将 Unicode 文本存 储为 2 个 或 4 个字节(实际上只用了31 位,最高位必须为0)序列的串。 这两种方法 的正式名称分别为 UCS-2 和 UCS-4。

UCS-2有216=65536个码位, UCS-4有231=2147483648个码位。

• 作为 Unicode 标准一部分的国际标准字符集 参考。UCS 标准目前使用最广泛的的版本是 UCS-2,该版本指定的 16 位字符数值已作为 世界上大多数语言的编码标准而被接受,并得 到了承认。 30

山东师范大学信息学院研究生课程 2009年10月21日星期三

编码空间的分配

UCS-4根据最高位为0的最高字节分成27=128 个group。每个group再根据次高字节分为256个 plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只 是最后一个字节不同,其余都相同。 group 0的plane 0被称作Basic Multilingual Plane, 即BMP(基本多语言面)。或者说UCS-4 中,高两个字节为0的码位被称作BMP。 将UCS-4的BMP去掉前面的两个零字节就得 到了UCS-2。在UCS-2的两个字节前加上两个零字 节,就得到了UCS-4的BMP。

基本多语言面(BMP)

ISO 10646 定义了一个 31 位的字符集。 然而, 在这巨大的编码空间中, 迄今为止只分 配了前 65534 个码位 (0x0000 到 0xFFFD)。 这个 UCS 的 16位子集称为 基本多语言面 (Basic Multilingual Plane, BMP)。 新的字符仍源源不断地加入到 BMP 中, 但已经存在的字符是稳定的且不会再改变了。 将被编码在 16 位 BMP 以外的字符都属 于非常特殊的字符(比如象形文字), 且只有专 家在历史和科学领域里才会用到它们。

32 山东师范大学信息学院研究生课程 2009年10月21日星期三

基本多文种平面的组编码为 00H。UCS 规定当正 则形式的组、平面编码为 00H 时可以省略,因此安排 在基本多文种平面上的字符可用两个字节的二进制数 来表示,形成双八位编码字符集,记作 UCS-2。 基本多文种平面分成 A、I、O、R 四个区。 A 区:代码位置从 0000 ~ 4DFF,共 19903 个字位。 此区用于字母文字、音节文字以及各种符号的编码, 其中 0000 ~ 001F 和 007E ~ 009F 保留用于控制字符。 I 区:代码位置从 4E00 ~ 9FFF,共 20992 个字位。 此区用于中、日、韩(CJK)统一的表意文字,即中 国、日本、韩国等三国汉字的编码。 O 区:代码位置从 A000 ~ DFFF,共 16384 个字 位。此区目前未用,留作未来的标准化。 R 区:代码位置从 E000 ~ FFFD,共 8190 个字位。 此区是限制使用区,用于专用字符、变形显现形式和 兼容字符的编码。

33 山东师范大学信息学院研究生课程 2009年10月21日星期三

Unicode编码

UCS 不仅给每个字符分配一个代码, 而 且赋予了一个正式的名字。 表示一个 UCS

或 Unicode 值的十六进制数, 通常在前面加 上 "U+", 就象 U+0041 代表字符"拉丁大写 字母A"。 UCS 字符 U+0000 到 U+007F 与 US-ASCII(ISO 646) 是一致的, U+0000 到 U+00FF 与 ISO 8859-1(Latin-1) 也是一致的。

文 GB Unicode

CEC4 6587

B5B5 6863

B8F1 683C

CABD 5F0F

C1BC 826F

BAC3 597D

CJK characters

Unicode supports over 70,000 CJK characters right now, and work is underway to encode further additions. The International Standard ISO/IEC 10646 and the Unicode Standard are completely synchronized in repertoire and content. And that means that Unicode has the same repertoire as GB 18030, since that also is synchronized with ISO 10646 — although with a different ordering and byte format.

Unicode 字符有多少?

216=65536个字符

冷玉龙 1994年《中华字海》 86000 字

35 山东师范大学信息学院研究生课程 2009年10月21日星期三

Question & Answer


相关文章

  • 关于字符编码,你所需要知道的
  • 字符编码的问题看似很小,经常被技术人员忽视,但是很容易导致一些莫名其妙的问题.这里总结了一下字符编码的一些普及性的知识,希望对大家有所帮助. 还是得从ASCII码说起 说到字符编码,不得不说ASCII码的简史.计算机一开始发明的时候是用来解 ...查看


  • 计算机常见编码
  • 计算机常见编码 一. 有关编码的基础知识 1. 位 bit 最小的单元 字节 byte 机器语言的单位 1byte=8bits 1KB=1024byte 1MB=1024KB 1GB=1024MB 2. 二进制 binary 八进制 oct ...查看


  • 从此乱码是路人
  • 相信大家在刚学 Qt 的时候一定遇到过 #include #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QLabel lb; ...查看


  • 几种典型汉字编码之间转换的原理与实现
  • 计算机科学2008Voi.35NQ.4B 几种典型汉字编码之间转换的原理与实现 周 (西南石油大学计算机科学学院 成都610500)1 永1 陈宁2 成都610213)2 (中国石油西南油气田公司输气管理处 摘要本文讨论汉字与机内码.区位码 ...查看


  • COM编程入门
  • COM编程入门 第一部分--什么是COM,如何使用COM 编译:赵湘宁 点击查看 本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念.内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件.本文不 ...查看


  • SQL常用的几个数据类型
  • 一,字符串类型 char 此数据类型可存储1~8000个定长字符串,字符串长度在创建时指定:如未指定,默认为char(1).每个字符占用1byte存储空间. nchar 此数据类型可存储1~4000个定长Unicode字符串,字符串长度在创 ...查看


  • 教你处理无法输入计算机的汉字
  • 教你处理无法输入计算机的汉字 一些汉字无法输入计算机,一般不外乎以下二种情况:一是计算机操作系统所支持的字符集及其相应支持字体的问题,一是输入法的问题. (一)字符集.字体.输入法 ① GB2313字符集,收入汉字6763个,符号715个, ...查看


  • 长篇连载(二):我控告微软侵权的专利及其相关概念
  • 字词兼容代码的来源和我的发明专利 在我与微软公司的这场双方实力相差悬殊的的专利侵权诉讼案中,微软公司承认微软拼音输入法对汉语拼音音节进行了编码,并且在对汉语拼音信息的处理过程中使用了将拼音字符串的编码和拼音音节编码进行转化的处理方法,双方争 ...查看


  • 字字节位的关系
  • 1.位(bit) 来自英文bit,音译为"比特",表示二进制位.位是计算机内部数据储存的最小单位,11010100 是一个8位二进制数.一个二进制位只可以表示0和1两种状态(21):两个二进制位可 以表示00.01.10 ...查看


热门内容