字符编解码

Posted chen--biao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符编解码相关的知识,希望对你有一定的参考价值。

所有的文件存储-------->字节

字节(byte)  --(编码)-- >   字符 (char)

字节(byte)  < --(解码)--    字符 (char)

字节:跟机器打交道。

字符:跟人打交道。

乱码的本质原因:编码、解码不一致。

 

ASCII (American Standard Code For Information Interchange,
    美国信息交换标准代码)。
    用7bit来表示一个字符,2的7次方 = 128个字符。

ISO-8859-1(西欧的编码标准,ASCII是它的子集)
    用8bit(一个字节)来表示一个字符,2的8次方 = 256个字符。

中文:gb2312 < gbk < gb18030
    用16bit(两个字节)来表示一个汉字。2的16次方 = 65536个字符。

unicode 万国码,包含全世界的字符。
    用16bit(两个字节)表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。
    优点是:可以表示所有的字符。
    缺点是:存储变大。(原本a字符仅需要1个字节的存储空间,现在变为两个字节才能存储)

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,UTF-8用1到4个字节编码Unicode字符。
    特点:变长的字节表示。
    一般来说,用3个字节表示一个中文。英文用1个字节来表示。

以上是关于字符编解码的主要内容,如果未能解决你的问题,请参考以下文章

字符编解码

Huffman树及其编解码

字符编码与解码

“UnicodeEncodeError:‘ascii’编解码器无法编码字符”

java 编解码

iOS Emoji编解码(OBJ-C/Swift)