Unicode十讲(上)

好南儿常庄话起Unicode,个么啥叫啥Unicode呢,佢好派啥个用场?不大清爽个铜镬今朝看过好南儿写个字符编码方面十节内容就……更加搞不清爽了。汗。

字符、字集、字体、字库搭bit、byte

此地讲个全是信息技术方面个概念,不涉及佢拉来拉别个领域个概念。

字符(character)就是侬箇歇看到个句子里头一隻隻物事。“字”是一隻字符,“符”也是一隻字符,“(”是一隻字符,“c”也是一隻字符。除脱汉字、字母、数字、标点搭著别个样样式式符号,还有眼特殊个字符——控制符,譬方“回车”、“退格”、“删脱”咾啥。

字集(character set)是字符个集合。有種字集是封闭个,定好著就不好再加字符,譬方ASCII;有種呢是开放个,譬方Unicode。

字体(typeface、font)是字符个风格式样。

字库(computer font)是字集内若干字符以某種字体储存拉一淘个集合。居著字库,电脑再好显示字符。

来拉电脑内部,信息全是以“bit”储存个。一隻bit表示0或者1两種状态个一種。一隻字集假使用七隻bit来编码,个么顶多好摆2⁷拢共一百廿八隻字符。

若干隻bit组成“byte”。现在一般全讲8 bits=1 byte,不过一开始不是箇恁介个。像ISO/IEC 646制订个年代,7 bit byte是不行个。为著吃准足,一眼信息技术个标准全是讲“octet”(八隻bit)个,不讲“byte”。

“bit”、“byte”大陆北语搭臺湾北语分别翻成功“比特”、“字节”搭“位元”、“位元组”。我担“bit”翻成功“柲”——毗必切(bih),偶也;“byte”翻成功“棑”——薄佳切(bā),筏也。

ASCII、ISO/IEC 646

上个世界60年代,ASA(American Standards Association,美国标准协会)造著隻七柲个字符编码方案,讴“ASCII”([ˈæski],American Standard Code for Information Interchange,美国信息交换标准码)。一百廿八隻字符包括三十三隻不好打印个控制符,九十四隻可印字符,一隻空格。

ASCII只适合像英语恁介只用廿六隻基本拉丁字母个语言,别个国家要用扩充拉丁字母个么只好担一部分标点符号去脱,调成功自家需要个字符。一眼国家由此建立个标准搭美国个ASCII一淘成为国际标准ISO/IEC 646一種種国家变体。现在韩国、日本个字库101 1100码点是货币标记₩、¥而非ASCII个反斜杠应该就是箇个辰光ISO/IEC 646韩国、日本变体留落个问题。

课外阅读:ISO/IEC 646(吴语)

ISO/IEC 2022、GB 2312、Big5

扩充拉丁字母基本上好用了,个么阿拉汉字哪恁办呢?覅讲一百廿八隻码点,就算一千两百八,也远远较不够常用汉字摆。ISO/IEC 2022想出隻办法,一隻ASCII码好表示94隻可印字符,个么两隻就好表示94²拢共8836隻字符,难么常用汉字摆得落了伐。个么传输过去两棑人家哪恁晓得侬箇个是两隻ASCII字符还是一隻汉字呢?ISO/IEC 2022用逃逸序列(escape sequence)搭调换函数(shift function)来说明后头个数据是单棑个还是双棑个,应该调用何里隻字集。

GB 2312箇隻名词大家应该讲牢熟了——“楷体GB2312”咾、“简体中文(GB2312)”咾。GB 2312是種双棑编码字集,根据GB 2311(对应ISO/IEC 2022)提供个上述技术制订。佢拢共定著6763隻汉字搭682个别样字符(数字、拉丁字母、假名、注音字母、希腊字母咾啥),汉字部分分一级汉字(汉拼序)搭二级汉字(部首序)。储存用个机内码搭上头讲个传输用个交换码不一样,往往不是用七柲双棑而是用八柲双棑,单棑字符个八柲顶高位用0,双棑字符个顶高位用1。

讲到GB 2312么,就不得不讲一讲Big5。Big5是臺港澳等用传统汉字(“繁体中文”)地方个主流字集,拢共收录13060隻汉字。上个世纪80年代初,臺湾有得各種各样互不兼容个字符编码,而大陆推行个GB 2312又朆收繁体字,臺湾个“财团法人资讯工业策进会”为著“五大中文套装软体”制订著Big5(即“五大码”,后首英语翻转来翻顶倒了,变成“大五码”)。不同于GB 2312,Big5搭ISO/IEC 2022不兼容个。

课外阅读:曾士熊、魏林梅《多位元組內碼編碼》

EASCII、ISO/IEC 8859

ASCII摆煞来许不够用个。德国变体DIN 66083调脱十六隻码点,其中一半是彻底改脱。但是“§ÄÖÜäöüß”摆平了,“@[]{|}˜”就摆不平了——德国人用著前者,后者不好用,外加佢打隻“Ä”美国人(用ASCII)看到个是“[”。

大家想着搞扩充美国信息交换标准码——EASCII(Extended ASCII),就是担ASCII码由七柲扩充成八柲(就像上头讲个GB 2312个机内码),个么好摆个字符就好翻隻跟斗。不过呢,EASCII並不是ASCII个升级版,也不是“一種”编码方案。

ISO/IEC 8859发布著一套八柲个ASCII扩充标准。去脱弃置个ISO/IEC 8859-12,箇套标准拢共有得十五隻部分。ISO/IEC 8859-1到4、9、10、13到16十隻是拉丁字母,听剩几隻是阿拉伯、希腊咾啥文字。

“§ÄÖÜäöüß”来拉十隻拉丁剧目里向码点一致,但是别个EASCII添加字符多数是不一致个。

课外阅读:ISO/IEC 8859(吴语)

ANSI

制订ASCII个ASA后首来变成功ANSI([ˈænsiː],American National Standards Institute,美国国家标准学会),佢拉一份草案成为ISO/IEC 8859-1。佢隻牌头呢,畀微软用来指称与之类似个编码Windows-1252乃至别个码页。码页是类似编码字集个概念。来拉“简体中文”Windows里向,ANSI指个码页是Windows-936(GB 2312,后首来改为GBK);来拉“繁体中文”Windows里向,ANSI指个码页是Windows-950(Big5)。

某隻文件来拉特定个码页环境里储存,开开辰光假使搞错脱码页,就会得变成乱码。譬方阿拉用Windows-936码页储存写有“吴语”两个字个txt文件,用Windows-950开开来看到个是“挔逄”,用Windows-1252开开来看到个是“ÎâÓï”。因为“吴语”一开始是Windows-936来拉用CEE2搭D3EF储存个,而来拉Windows-950里向CEE2搭D3EF就是“挔逄”,来拉Windows-1252里向CE是“Δ,E2是“â”,D3是“Ó”,EF是“ï”。假使CE、E2、D3、EF来拉别个码页(字集)里向朆定义,个么就反馈畀侬几隻“?”(问号)。

假使世界上个文字和总摆拉一隻字集里向,就好甮分一隻隻码页哉,也不大会碰碰要出现乱码。

课外阅读:伐木丁丁鸟鸣嘤嘤《浅谈文字编码和Unicode(上)》

阿爹拉孃,讲到此地块还朆讲Unicode。算了,拆成功两篇伐。囧。

Posted in 文字处理. 标签: , , , .

Leave a Reply


为了防止恶意的垃圾评论脚本,请输入以下图片里面的数学方程式的答案。
防垃圾评论问题