编码,解码,乱码等等。
先来扫盲:
解码:把看得懂的东西转成二进制字节码
编码:将二进制字节码转成看得懂的东西
常用编码: ASCII
:美国定义的一张码表。这张码表中只有:数字、字母、符号、拉丁文。用1个字节的最低7位表示数据。 ISO8859-1
:欧洲的一张码表,兼容ASCII
,增加了欧洲语言。一个字节表示一个字符,所有8
位都表示数据。 GB2312
:兼容ASCII
,识别数千中文,2
个字节表示一个汉字。 GBK
:是GB2312
的升级版,识别2
万多中文,2
个字节表示一个汉字。 GB18030
:是GBK
的升级版,包含了大部分的中文,还有少数民族的文字。2
个字节表示一个汉字。 Unicode
:世界计算机协会制定通用码表,2
个字节表示一个字符。 UTF-8
:Unicode
升级版。能用1
个字节表示的就用1
个字节,要用两个字节的就用2
个字节,能用3
个字节表示的就用3
个字节。汉字基本都是3
个字节。
乱码问题终极原因:
举一个好懂的例子:你和班花传纸条,约定010101
是i love you
, 而对于黑客小黑一般用010101
来表示fuck you
。你给班花传了纸条,被小黑截获了,然后小黑就把010101
解读成了fuck you
然后,故事就开始了=-=
在这个例子里,把i love you
对应成010101
的过程,就叫做编码encode
, 把010101
读成i love you
的过程就叫做解码decode
,而黑客小黑不懂你和班花之间的规则(即编码格式decoding format
),他解出来的码就是个乱码 fuck you
. 嗯,大概就是这样。
一图胜千言: