前面我们聊过编程语言的发展史,大家都知道,最早的编程语言被称为机器语言,完全由0和1组成,在打孔纸带上运行。虽然机器识别起来非常快速,但对于使用者而言却非常繁琐,为了方便人机交流,当时的程序员便着手教计算机“学英语”。在1967年,计算机刚被发明出来没多久,美国国家标准学会便制定出了ASCII码,将拉丁字母及一些常用的符号与相应的二进制数字绑定,这样计算机就能够识别出单词。此后ASCII码经过多次修订,已经称为一种成熟的编码方式沿用至今。
ASCII码风光无限,但汉字编码就没有那么走运了。首先汉字是象形文字,与西方的字母文字有本质上的区别。字母文字的字符数量有限,ASCII码只有128个字符,一些欧洲国家因为有特殊的字母,使用扩充过后的编码体系,可以最多表示256个符号,这已经很多了,可是汉字数量数以万计,而且某些领域新字也在不断产生(比如化学、生物等),这就造成了极大的不便。因此,如何让计算机认识汉字成为另无数专家头疼的问题。
最早提出计算机汉字编码的不是中国,而是隔壁小日子。上世纪70年代,日本作为亚洲最发达的国家,在计算机上也遇到了字符编码的瓶颈,让所有人都去学英语不太现实,于是在1978年,日本工业规格协会制定了JIS
C 6226,即JIS码,里面规定了6879个字符,其中包括6355个汉字。但这些汉字是为日语服务的,让计算机学中文这件事情并没有得到解决。
于是在1980年,中国国家标准总局发表了《信息交换用汉字编码字符集》,又被称为GB2312编码,共收录汉字6763个和非汉字图形字符682个,分为94个区,每区94位,每位一个字符,因此又被称为区位码。GB2312只收录了一些常用字,适用于日常交流,但人名、古汉语的一些字并未收录,仍有不便之处,于是在1995年,国家又颁布了《汉字编码扩展规范》(GBK),总共收录了2w多字,甚至包括一些少数民族文字,基本满足了使用需求。
而在港澳台,则采用和内陆完全不同的编码方式。1984年,台湾财团法人信息产业策进会于当地13家厂商联合制定了五大中文套装软件使用内码,即BIG5码或大5码,在包括港澳台和东南亚华人等繁体中文圈应用广泛。但BIG5有先天性的问题,它在某些低比特字符和特定汉字与ASCII码重叠,导致系统无法识别产生乱码。
既然日本、大陆和港澳台都有了不同的编码方式,那么互相之间可能会因编码问题导致交流障碍,急需要有一个统一的标准来处理这些文字。于是,在各方努力协调下,1993年CJK编码诞生了,C意味着Chinese,J意味着Japanese,K意味着Korean,名字代表东亚文化圈的三国,其实不止包裹这三国,还有越南的喃字等,共包括8万多个字符,在这个东亚东南亚范围内广泛适用。
汉字编码除了常用的这些之外,还有历史较久、多用于古籍索引的四角号码,用于电报的流水码等,因为和计算机没有太大关联,这里就不一一赘述。