引言
如果不知道是什么编码,先试试UTF-8!
写在前面的话
本文属于 字符编码系列文章之一,更多请前往 字符编码系列。
题纲
- 基本概念
-
欧美的编码
- ASCII码
- ISO-8859-1编码
-
中文系列编码
- GB2312编码
- GBK编码
- BIG5编码
- GB18030编码
- ANSI 编码
- Unicode与UCS
- Unicode标准
-
Unicode编码的不同实现
- UTF-8编码
- UTF-16编码
- UTF-32编码
基本概念
关于字符编码的简介以及发展编年史可以参考 【字符编码系列】字符,字符集,字符编码解惑
本文主要详细介绍各个编码的特点以及实现。
欧美的编码
ASCII码
简介
(American Standand Code for InformationInterchange)的缩写
ASCII码是计算机最开始支持的基于拉丁字母的编码,一个字符用一个字节表示,只用了低7位,最高位为0,因此总共有128个ASCII码,范围为0~127。
编码范围
0~127(总共有128个ASCII码),详情百度(google)ASCII码表
适用范围以及存在问题
适用于现代英文和其它西欧语言
但是由于编码范围有限,所以无法支持多种地区的语言,后来就产生了各种其它的编码方案
特性
单字节编码
只占用一个字节
高位不占用,最多为(01111111)
ISO-8859-1编码
简介
即”标准码”,通常叫做Latin-1
ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号
编码范围
0x00-0xFF(0-255)
适用范围以及存在问题
此字符集支持部分于欧洲使用的语言,包括阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。
但是不支持中文和东亚等国的语言.
特性
单字节编码
只占用一个字节
高位可以用,最多为(11111111)
中文编码系列
GB2312编码
简介
GB是”国标”两字的拼音首字,2312是标准序号
GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,1981年5月1日开始使用。GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。
(GB2312中的字符是全角字符,ASCII原始的字符是半角字符)
编码范围
A1A1-FEFE(41377-65278)
其中汉字编码范围:B0A1-F7FE(45217-63486)。
适用范围以及存在问题
基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。但对于人名、古汉语等方面出现的罕用字和繁体字,GB 2312不能处理,因此后来GBK及GB 18030汉字字符集相继出现以解决这些问题
中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312
特性
分区表示
GB2312编码对所收录字符进行了“分区”处理,共94个区,每区含有94个位,共8836个码位。这种表示方式也称为区位码。
01-09区收录除汉字外的682个字符。
10-15区为空白区&