先来扫盲:
解码:把看得懂的东西转成二进制字节码
编码:将二进制字节码转成看得懂的东西
常用编码: 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. 嗯,大概就是这样。
一图胜千言: