各种编码格式的区别:ASCII,Latin1,Unicode,UTF-8与
GBK
⽬录
1.ASCII编码
ASCII码实现的是⼤⼩写英⽂字母,阿拉伯数字,及常⽤的标点符、运算符、控制字符(换⾏、删除等)和通信字符(⽂头、确认等)与计算机编码之间的对应。ASCII编码采⽤单字节(8 Bit)存储,实际数据存储空间是7 Bit,最⾼位的1 Bit是奇偶校验位。
ASCII 编码对于 英语 国家⾜够⽤了,但是却⽆法表达⾮英语国家字符到计算机编码之间的映射,如中⽂汉字、法语字母等。
所以,出现了很多⾮ASCII编码(但⼤多数都是兼容ASCII码的)。
2.Latin1编码
Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。Latin1编码是单字节编码,向下兼容ASCII,其编
码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII⼀致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是⽂字符号。
ASCII编码是⼀个7位的容器,ISO-8859-1编码是⼀个8位的容器。
因为Latin1编码范围使⽤了单字节内的所有空间,在⽀持Latin1编码的系统中传输和存储其他任何编码的字节流都不会被抛弃。换⾔之,把其他任何编码的字节流当作Latin1编码看待都没有问题。这是个很重要的特性,MySQL数据库默认编码是Latin1就是利⽤了这个特性。
3.Unicode编码
世界上存在着多种编码⽅式,同⼀个⼆进制数字可以被解释成不同的符号。因此,要想打开⼀个⽂本⽂件,就必须知道它的编码⽅式,否则⽤错误的编码⽅式解读,就会出现乱码。为什么电⼦邮件常常出现乱码?就是因为发信⼈和收信⼈使⽤的编码⽅式不⼀样。
可以想象,如果有⼀种编码,将世界上所有的符号都纳⼊其中。每⼀个符号都给予⼀个独⼀⽆⼆的编码,那么乱码问题就会消失。
这就是Unicode。
unicode汉字
Unicode当然是⼀个很⼤的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不⼀样需要注意的是,Unicode只是⼀个符号集,它只规定了符号的⼆进制代码,却没有规定这个⼆进制代码应该如何存储。
如果所有字符都按照最⼤存储空间存储,那必然会浪费很⼤的空间,
⽐如所有字符都按照3字节存储,但是英⽂字母只需要⼀个字节存储就够了,
就等于说⼀个 Unicode 编码的英⽂⽂档是 ASCII 编码⽂档存储空间的三倍。
所以,便有了变长编码—-UTF-8。
4.UTF-8编码
UTF-8就是在互联⽹上使⽤最⼴的⼀种Unicode的实现⽅式。其他实现⽅式还包括UTF-16和UTF-32,不过在互联⽹上基本不⽤。
UTF-8最⼤的⼀个特点,就是它是⼀种变长的编码⽅式。它可以使⽤1~4个字节表⽰⼀个符号,根据不同的符号⽽变化字节长度。
如ASCII编码的内容UTf-8中就是⽤⼀个字符存储的。
5. GBK编码
GBK编码是在GB2312-80(也称作GB2312,GB码)标准基础上的内码扩展规范,使⽤了双字节编码⽅案。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论