编码全解:从ASCII/ISO-8859/GB2312/GBK到Unicode的UCS-2/UCS-4/UTF-8/UTF-16/UTF-32

本文详细介绍了字符编码的历史,从ASCII编码的起源和国际化,到EASCII和ISO-8859编码的发展。接着,文章探讨了汉字编码GB2312及其扩展GBK,以及统一编码字符集Unicode的UCS-2和UCS-4。最后,重点讲解了UTF编码体系,包括UTF-8、UTF-16和UTF-32的编码方式,尤其是UTF-16的代理区和字节序标记(BOM)概念。
摘要由CSDN通过智能技术生成

1、ASCII编码

为了能在电报、打印机、计算机等电信设备上进行信息交换,就必须为不同的设备制定统一的编码格式。早期的电信设备字符编码基本都是使用6位编码。1963年美国国家标准协会(ANSI)制定并公布的ASCII编码是第一个被广泛采用7位编码。

ASCII全称:American Standard Code for Information Interchange,美国信息交换标准码。直至1986年最后一次修订,ASCII共定义了128个字符:

ASCII编码速查表

1.1、控制字符

其中0x00~0x1F这32个属于控制字符,这些控制字符用于控制通信设备,比如0x07(BEL,bell)表示蜂鸣器响铃,0x08(BS,backspace)表示退格,0x0A(LF,line feed)表示换行,0x0D(carriage return)表示回车,0x0C(FF,form feed)表示换页…

回车和换行被分为两个字符是有一定的历史原因的。早期的打字机回车、换行是两个动作。回车就是打字机把纸张重置到行首位置,换行就是把纸张上移一行。
老式打字机

这些控制字符在打印设备与字符屏幕等终端上无法显示,一些终端设备为这些控制字符提供了拓展,使这些字符显示笑脸、扑克牌花色等符号。

1.2、打印字符

0x20~0x7F为可显示字符,其中比较特殊的0x20第32号字符为空格字符,0x7F第127号字符为DEL控制字符。

在很多编程语言中会把空格与控制字符作为空白字符处理。所以实际可显示图形字符共94个。

94这个特殊的数字对于在后面GB2312中会再次出现。

控制字符的拓展

1.3、ASCII编码的国际化

美国的很多国家标准都被ISO组织给国际化了,ASCII也不例外。

国际标准化组织和国际电工委员会ISO/IEC于1972年制订了ISO/IEC 646标准,它来自于多个国家标准(主要是ASCII),允许其他国家根据需要修改ASCII中的$ @ [ \ ] ^ { | } ~12个字符为自己国家使用。

2、EASCII编码

欧洲国家与美国走得最近的,美国在计算机方面的发展也影响到了欧洲国家,编码问题就是其中之一。

很多欧洲国家觉得ASCII码中的95个可显示字符并不能表示本国语言的所有字符。而ASCII码使用7位编码,第8位作为校验纠错位,对于计算机内存而言,校验纠错变得不是那么必要了,使用8位编排256个字符明显不需要额外的编程成本和存储成本。于是许多的制造商在ASCII的基础上添加了128个扩展字符,其中比较流行的是IBM和微软共同制定并在MS-DOS上使用的CP437编码(Code Page 437)。

扩展ASCII编码

3、ISO-8859编码

由于各国制造厂商的EASCII扩展编码不统一,于是ISO/IEC委员会颁布了8位字符编码标准——ISO/IEC 8859

这个编码标准共有16部分,分别以ISO/IEC 8859-n表示(其中ISO/IEC 8859-12印度梵文已废弃),这些字符集可以以ISO-8859-n作为MIME名称,比如最常见的iso-8895-1是西欧语言的8位编码标准。

下面是ISO-8895的16个编码标准:

部分 名称 颁布时间/最后修订时间
ISO/IEC 8859-1 拉丁语系1-西欧 1987/1998
ISO/IEC 8859-2 拉丁语系2-中欧 1987/1999
ISO/IEC 8859-3 拉丁语系3-南欧 1988/1999
ISO/IEC 8859-4 拉丁语系4-北欧 1987/1998
ISO/IEC 8859-5 斯拉夫语(Cyrillic) 1988/1999
ISO/IEC 8859-6 阿拉伯语(Arabic) 1987/1999
ISO/IEC 8859-7 希腊语(Greek) 1987/2003
ISO/IEC 8859-8 希伯来语(Hebrew) 1988/1999
ISO/IEC 8859-9 拉丁语系5-土耳其语 1989/1999
ISO/IEC 8859-10 拉丁语系6-北日耳曼语 1992/1998
ISO/IEC 8859-11 泰语(Thai) 2001
ISO/IEC 8859-13 拉丁语系7-波罗的语 1998
ISO/IEC 8859-14 拉丁语系8-塞尔特语 1998
ISO/IEC 8859-15 拉丁语系9-西欧 1999
ISO/IEC 8859-16 拉丁语系10-东南欧 2001
ISO/IEC 8859-12 原预留给印度梵文,后搁置废弃 搁置废弃

4、汉字编码GB2312

信息技术飞速发展,计算机也开始进入中国,但是有个很严峻的问题:中华文化博大精深,光常用汉字就有几千个,这明显无法用单个字节进行编码,于是智慧的中国人民使用两个字节搞出了GB2312编码,并美其名曰:DBCS(Double Byte Charecter Set 双字节字符集)。

4.1、GB2312介绍

G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值