【转】UTF-8 GB18030 GBK GB2312区别

UTF-8 : 范围算最大,包括最多 基于unicode的 国际化的场合适合使用

GB18030:是GBK的超集

GBK : 中文 包括字比GB2312要多

GB2312: 中文 包括字最少

UTF-8详解:

UTF-8其实和Unicode是同类,就是在编码方式上不同!
首先,不像!
我们先来看Unicode的编码:一个英文字母 a 和 一个汉字 好,编码后都是占用的空间大小是一样的,都是两个字节!
而UTF8编码:一个英文字母a和 一个汉字 好 ,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!
现在就让我们来看看UTF8编码的原理吧:
  因为一个字母还有一些键盘上的符号加起来只用二进制七位就可以表示出来,而一个字节就是八位,所以UTF8就用一个字节来表式字母和一些键盘上的符号。然而当我们拿到被编码后的一个字节后怎么知道它的组成?它有可能是英文字母的一个字节,也有可能是汉字的三个字节中的一个字节!所以,UTF8是有标志位的!
  当要表示的内容是 7位 的时候就用一个字节:0*******  第一个0为标志位,剩下的空间正好可以表示ASCII 0-127 的内容。
  当要表示的内容在 8 到 11 位的时候就用两个字节:110***** 10******  第一个字节的110和第二个字节的10为标志位。
  当要表示的内容在 12 到 16 位的时候就用三个字节:1110***** 10****** 10******    和上面一样,第一个字节的1110和第二、三个字节的10都是标志位,剩下的空间正好可以表示汉字。
  以此类推:
四个字节:11110**** 10****** 10****** 10****** 
  五个字节:111110*** 10****** 10****** 10****** 10****** 
  六个字节:1111110** 10****** 10****** 10****** 10****** 10****** 
  .............................................

阅读更多
上一篇详解python中文编码与处理
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭