GBK UTF8 GB2132

  GBK就是在保存你的帖子的时候,一个汉字占用两个字节,外国人看会出现乱码,为此我中华为自己汉字编码而形成之解决方案。
  UTF8就是在保存你的帖子的时候,一个汉字占用3个字节。但是外国人看的话不会乱码。为此西人为了解决多字节字符而形成之解决方案。
  ASCII(ISO-8859-1)是鼻祖,最简单的方式,字节高位为0
  GB2312、GBK、GB18030,这几个是中文编码方式,并向下兼容。GB2312包含7000多个汉子和字符,GBK包含21000多个,GB18030更厉害,到了27000多个。他们都是用2个字节来表示一个汉字。跟ASCII是怎么区分的呢?如果高字节的高位为1(也就是高字节大于127),就表示是汉字,低字节并无明显特征。
  Unicode是统一编码,它建立了一个全世界统一的码表。世界上的所有文字,在这张码表中都是唯一的。
  UTF-8是Unicode的一种存储、传输方式。它将整个Unicode码表分为3部分。
  0000 - 007F 这部分是最初的ascii部分,按原始的存储方式,即0xxxxxxx。
  0080 - 07FF 这部分存储为110xxxxx 10xxxxxx
  0800 - FFFF 这部分存储为1110xxxx 10xxxxxx 10xxxxxx
  因此,一个汉字究竟被存储为什么,就需要:先查unicode码表,然后根据在码表的位置进行计算。例如:“电”字,在码表中是3575,计算成utf8就是E794B5,而在GB2312的码表中为B5E7
  UTF-8的好处:兼容ASCII,存储英文文件都是单字节,文件小。当然,当以存中文为主时就变成了3字节编码了,比GB系列还大!如何标明一个文件是utf8格式呢?这个标记是可选的:EF BB BF。比如,用windows自 带的记事本创建一个utf8格式的文件,就会加上这个标记。但是,如果用ultraedit创建utf8文件,并不会加上这个标记。这个标记有个术语,叫 做BOM(Byte Order Mark)。不带BOM的utf8文件和GB2312文件怎么区分呢?我也不知道。唯一能想到的办法就是:先用一种试,如果出现乱码,就用另一种再试
  UTF-16是双字节存储,这就带来一个问题,即高低字节的顺序。两个字节有两种顺序,它们也用BOM来标明。分为大尾码和小尾码两种。大尾码的BOM是FEFF,小尾码的BOM是FFFE
  GBK 的中文编码是双字节来表示的,英文编码是用ASC||码表示的,既用单字节表示。但GBK编码表中也有英文字符的双字节表示形式,所以英文字母可以有2种GBK表示方式。为区分中文,将其最高位都定成1。英文单字节最高位都为0。当用GBK解码时,若高字节最高位为0,则用ASC||码表解码;若高字节最 高位为1,则用GBK编码表解码
  至于UTF-8编码则是用以解决国际上字符的一种多字节编。码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
  GBK包含全部中文字符,UTF-8则包含全世界所有国家需要用到的字符。

GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)

UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。

所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。
但是如果UTF8中出现中文那就是3个字节~~具体的自己权衡。

转自:http://blog.163.com/cmdbat@126/blog/static/17029212320135297400353/

posted @ 2017-03-13 14:20  Mayny#  阅读(222)  评论(0编辑  收藏  举报