关于编解码:
在计算机中,所有的字符都是以0、1的二进制的形式保存的。如何把一个字符转换成二进制这个过程就叫做编码,反过来如何把计算机中的二进制还原成一个字符叫做解码。
由此我们可以知道,要想正确的解码,必须知道是用什么规则编码的。假如我们有一种规则叫Ascii,在这种规则下字符‘a’会被存储为01100001,那么解码时如果按照这种规则解码就能够解出‘a’,但是如果按照其他规则解码,可能就解出来奇怪的字符了,这时就会出现乱码。
我们经常听说的Ascii、UTF8、gbk等等都是不同的规则。这样的规则有很多很多,但是在这些规则中,英文字符的编码往往都是一致的,而中文或日文则有的规则不支持,即使支持的规则各自定义也不同,所以会出现英文不容易出现乱码,而中文、日文字符不匹配时容易出现乱码。
编码分成两部分,一部分叫做字符集,规定了在这个规则里面,id和字符的对应关系。常见的字符集包括ASCII,Unicode等,比如我们都熟悉ASCII码表中的48号对应的字符是‘0’。另一部分是规则,主要规定的是用几位来表示字符,如何表示字符。比如UTF8和UTF16,字符集都是unicode,但是字长的定义不同,因此最后编码产生的结果也不同。
常见的编码格式: