设为首页 加入收藏

TOP

Unicode简介(七)
2010-12-30 21:07:57 】 浏览:18600
Tags:Unicode 简介
提供了不包括带重音符号字母的附加拉丁字元集,但最终内码表的较高的128个字元还是包括了完整的非拉丁字母,例如希伯来语、希腊语和斯拉夫语。自然,如此多样会导致内码表变得混乱;如果少数带重音的字母未正确显示,那么整个文字便会混乱不堪而不可阅读。

内码表的扩展正是基於所有这些原因,但是还不够。斯拉夫语的MS-DOS内码表855与斯拉夫语的Windows内码表1251以及斯拉夫语的Macintosh内码表10007不同。每个环境下的内码表都是对该环境所作的标准字元集修正。IBM OS/2也支援多种EBCDIC内码表。

但等一下,你会发现事情变得更糟糕。

双位元组字元集
 

迄今为止,我们已经看到了256个字元的字元集。但中国、日本和韩国的象形文字符号有大约21,000个。如何容纳这些语言而仍保持和ASCII的某种相容性呢?

解决方案(如果这个说法正确的话)是双位元组字元集(DBCS:double-byte character set)。DBCS从256代码开始,就像ASCII一样。与任何行为良好的内码表一样,最初的128个代码是ASCII。然而,较高的128个代码中的某些总是跟随著第二个位元组。这两个位元组一起(称作首位元组和跟随位元组)定义一个字元,通常是一个复杂的象形文字。

虽然中文、日文和韩文共用一些相同的象形文字,但显然这三种语言是不同的,而且经常是同一个象形文字在三种不同的语言中代表三件不同的事。Windows支援四个不同的双位元组字元集:内码表932(日文)、936(简体中文)、949(韩语)和950(繁体汉字)。只有为这些国家(地区)生产的Windows版本才支援DBCS。

双字元集问题并不是说字元由两个位元组代表。问题在於一些字元(特别是ASCII字元)由1个位元组表示。这会引起附加的程式设计问题。例如,字串中的字元数不能由字串的位元组数决定。必须剖析字串来决定其长度,而且必须检查每个位元组以确定它是否为双位元组字元的首位元组。如果有一个指向DBCS字串中间的指标,那么该字串前一个字元的位址是什么呢?惯用的解决方案是从开始的指标分析该字串!

Unicode解决方案
 

我们面临的基本问题是世界上的书写语言不能简单地用256个8位元代码表示。以前的解决方案包括内码表和DBCS已被证明是不能满足需要的,而且也是笨拙的。那什么才是真正的解决方案呢?

首页 上一页 4 5 6 7 8 9 10 下一页 尾页 7/21/21
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇视窗和讯息 下一篇没有了

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目