- 中文简体字符集 GBK
中文和英文都采用两个字节, 比 GB2312 更全
-
中文繁体字符集 Big5
-
统一字符集(万国码) unicode
unicode 字符编码兼容 ascii 编码, 有 3 中标准:
- utf-8
采用变长字符编码, 最短一个字节(ascii 字符), 最长 6 个字节
- utf-16
也是变长字符编码, 大部分是两个字节, 少数为 4 个字节
utf-16 中占用四个字节字符: é
采用 utf-16 编码的计算机语言单个字符无法存储 4 个字节字符的情况, 只能存储 2 个字节
- utf-32
采用 4 个字节的编码方式, 但是大部分字符的很多位都是 0, 编码效率不高
- c/c++
中字符默认为 utf-8 单个字节. L"" 前缀 L 便是 unicode(utf-16) 字符编码
- java, c#, javascript/typescript
java, c# 中 char 和 String 均为 unicode(utf-16) 编码
- go
go 中默认 string 为 utf-8 编码, rune 表示 unicode(utf-16) 编码字符
string 如果想要支持随机访问需要转化为[]rune 切片才可以
func change(s string, index int) rune {
ss := []rune(s)
return ss[index]
}
- python
pytohn3 采用灵活存储的方式, 取决于字符串中最长 unicode 码点, 对于 ascii 字符, 每个字符用一个字节表示; 对于基本多平面(BMP)内, 采用两个字节表示; 对于超出基本多平面内, 采用 4 个字节
utf-8 编码