昨天文章发出来后,有几个读者问我,编码这块怎么掌握,感觉总是很模糊,就知道个utf-8编码,到底如何掌握。
我其实了解也不深刻,把我知道的字符编码主要知识点,总结如下:
- Unicode 是最常用的一个字符集,只规定字符的编码,开头是'u',如'u4e25'对应字符是
严
,u005c'表示反斜杠,详细编码和字符对应表可参考:https://zh.wikipedia.org/wiki/Unicode字符列表 - ASCII编码一共规定了128个字符的编码,是美国人上世纪60年代制定的,记住只包括128个字符。1个字节能表示256个不同值,但只包括128个,所以第一位统一为0,后七位用来表示字符。
- 另一个常识:英语用上面ASCII编码的128个符号编码就够了,但其他语言,128个符号是不够的!!!
- 汉字多达10万不同字符。一个字节只能表示256种符号,肯定不够。那怎么办?必须使用多个字节表达一个符号。
- 如果使用2个字节表示一个符号,可能性有:
256 x 256 = 65536
种 - 上面提到Unicode只是一个字符集,不管存储实现它们的事情。同一个字符使用不同的存储方法,解析出来就会有很大问题。所以,急需要一种统一的编码方式。
- UTF-8编码被互联网广泛使用,它是Unicode字符集的一种极佳的存储方法。首先它是
变长度
,存储ASCII字符时,用1个字节存储它;存储汉字时,使用至少3个字节。这种变长度存储,大大提高了存储效率。 - UTF-8有一套设计精良的编码规则,感兴趣的可以去看看。