常见编码方式

324 阅读4分钟

常见的编码相关的名词

参考资料:程序员必备:彻底弄懂常见的 7 种中文字符编码

v2-0d0285e7b9433eeedf7e705d6e082d13_1440w.webp

ASCII

Wikipedia: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个值全部占满了。

简单理解:


GB2312

Wikipedia:GB2312

囊括生活中最常用的所有汉字。

共 6763 个汉字以及 682 个特殊符号,每个字占据 2 个字节

GB2312 兼容 ASCII。


GBK

Wikipedia:汉字内码扩展规范

在保证不和 GB2312、ASCII 冲突的前提下,对 GB2312 进行了扩展。

共 20902 个汉字以及 984 个汉语标点符号、部首等。每个字占据 2 个字节


GB18030

Wikipedia:GB18030

兼容 GB2312、GBK,GB2312 表示不了的字符使用 4 个字节表示。

Unicode

Unicode是一个字符编码标准,用于为全球范围内的所有字符提供唯一的标识符。它定义了每个字符的唯一码点,并为这些码点分配了一个整数值。

Unicode本身只是一个字符集和码点的定义,并没有指定具体的编码方式。

UTF-8和UTF-16是Unicode的实现方式之一,它们通过不同的编码方式将Unicode字符映射到字节序列,以便在计算机系统中进行存储和传输。


UTF-8

Wikipedia:UTF-8

UTF-8使用一至六个字节为每个字符编码(尽管如此,2003年11月UTF-8被RFC 3629重新规范,只能使用原来Unicode定义的区域,U+0000到U+10FFFF,也就是说最多四个字节):

  1. 128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
  2. 带有附加符号拉丁文希腊文西里尔字母亚美尼亚语希伯来文阿拉伯文叙利亚文它拿字母则需要两个字节编码(Unicode范围由U+0080至U+07FF)。
  3. 其他基本多文种平面(BMP)中的字符(这包含了大部分常用字,如大部分的汉字)使用三个字节编码(Unicode范围由U+0800至U+FFFF)。
  4. 其他极少使用的Unicode 辅助平面的字符使用四至六字节编码(Unicode范围由U+10000至U+1FFFFF使用四字节,Unicode范围由U+200000至U+3FFFFFF使用五字节,Unicode范围由U+4000000至U+7FFFFFFF使用六字节)。