计算机编码都有哪些(计算机中常见的字符编码及存储方式)
100次浏览
发布时间:2024-11-03 08:33:59
常见的字符编码
- ASCII、GBK、GB2312、Unicode等等
常识
- 用多个字节来代表的字符称之为宽字符,而 Unicode 码只是宽字符编码的一种实现,宽字符并不一定是 Unicode
- char 窄字符占1个字节
- wchar_t 宽字符,在 linux 下占4个字节,在 windows 下占2个字节
- 具体存储时除 UTF-8 以外都有大端序和小端序的区别
- 对 UTF-8 和 UTF-32 字符串排序可以得到和字典序相同的结果,UTF-16 则不能。(Unicode 码位的汉字排序是康熙字典序,而不是新华字典序。)
- 一个码位代表一个编码空间<Unicode / GBK ...>内的任何数值
- 编码单元可以表示一段已编码文本的最小比特组合,例如 UTF-8 UTF-16 UTF-32 分别使用 8 比特、16比特、32比特编码单元 。请注意,这仅仅是一组比特序列;它们存储在面向字节的媒体上的方式取决于特定编码的端序。当存储上述 UTF-16 码位时,UTF-16BE 会转换为“d8 89 dc 3f”,UTF-16LE 会转换为“89 d8 3f dc”。
ASCII编码
BIG5编码
GBK编码
- 一个码位占 1/2/4 个字节 GB2312(80)->GBK->GB18030,变长编码,极少部分中文占用4个字节
Unicode 编码
- UCS-2 一个码位占 2 个字节 ,定长编码 <Unicode编码方式之一> // 历史产物,基本已被淘汰
- UCS-4 一个码位占 4 个字节 ,定长编码 <Unicode编码方式之一>
- UTF-16 一个码位占 2/4 个字节 ,变长编码 <Unicode编码方式之一> // Windows 中被误认为是 widechar 或直接称其为 Unicode,这是错误的
- UTF-32 一个码位占 4 个字节 ,定长编码 <Unicode编码方式之一>
- UTF-8 一个码位占 1~6 个字节 ,变长编码 <Unicode编码方式之一>
- WideChar 一个码位占 2/4 个字节 ,变长编码 <Unicode编码方式之一> // Windows 下 UTF-16 的代称
Windows 平台
- char[] 采用 GB2312/GBK 编码,英文占 1 个字节,汉字占 2 个字节
- wchar_t[] 采用 UTF-16 编码,英文和大部分中文占 2 个字节,少部分字符占 4 个字节,即一个字符可能是用 wchar_t[1] 或者 wchar_t[2] 来表示
Linux 平台
- char[] 采用 UTF-8 编码,占 1~6 个字节,英文占 1 个字节,汉字占 3~4 个字节
- wchar_t[] 采用 UTF-32 编码,占 4 个字节
C++11 及以后的版本中
- char16_t 用于存储 UTF-16 编码的 Unicode 字符
- char32_t 用于存储 UTF-32 编码的 Unicode 字符