常见的编码相关的名词
ASCII
主要用于显示现代英语。
共 128 个字符,用 1 个字节(8 bits)表示,最高位是 0
ANSI
准确说,并不存在哪种具体的编码方式叫做ANSI,它只是一个Windows操作系统上的别称而已。在中文简体Windows操作系统上,ANSI就是GBK;在泰语操作系统上,ANSI就是TIS-620(一种泰语编码);在韩语操作系统上,ANSI就是EUC-KR(一种韩语编码)。并且所谓的ANSI只存在于Windows操作系统上。
ISO-8859-1(又名 Latin-1 或西欧语言)
Latin1也是单字节编码方式,Latin1在ASCII基础上又充分利用了后面那128个值,赋予他们一些泰语、希腊语等字母或符号,将1个字节的256个值全部占满了。
简单理解:
- ASCII 用一个字节中的低 7 位表示了 128 个字符,最高位用 0 表示,足够现代英语的使用。
- Latin-1 中一个字节的最高位是 1,另外的 7 位可以再表示 128 个字符,此字符集支持部分于欧洲使用的语言,包括阿尔巴尼亚语、巴斯克语、布列塔尼语、加泰罗尼亚语、丹麦语、荷兰语、法罗语、弗里西语、加利西亚语、德语、格陵兰语、冰岛语、爱尔兰盖尔语、意大利语、拉丁语、卢森堡语、挪威语、葡萄牙语、里托罗曼斯语、苏格兰盖尔语、西班牙语及瑞典语。
GB2312
囊括生活中最常用的所有汉字。
共 6763 个汉字以及 682 个特殊符号,每个字占据 2 个字节。
GB2312 兼容 ASCII。
GBK
在保证不和 GB2312、ASCII 冲突的前提下,对 GB2312 进行了扩展。
共 20902 个汉字以及 984 个汉语标点符号、部首等。每个字占据 2 个字节。
GB18030
兼容 GB2312、GBK,GB2312 表示不了的字符使用 4 个字节表示。
Unicode
Unicode是一个字符编码标准,用于为全球范围内的所有字符提供唯一的标识符。它定义了每个字符的唯一码点,并为这些码点分配了一个整数值。
Unicode本身只是一个字符集和码点的定义,并没有指定具体的编码方式。
UTF-8和UTF-16是Unicode的实现方式之一,它们通过不同的编码方式将Unicode字符映射到字节序列,以便在计算机系统中进行存储和传输。
UTF-8
UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节):
- 128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
- 带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。
- 其他基本多文种平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。
- 其他极少使用的Unicode 辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)。