Keep on going, never give up.

编码ANSI、GB2312、UNICODE与UTF-8区别

本文简要总结这几种编码的区别,具体用法就不说了,主要关注它们之间的区别。

下面是内容为:“1234567890\r\nABCDEFGHIJ\r\n伟大的国际”内容在不同编码下的十六进制图:

一、ANSI

ANSI同ISO8859-1一样,属于单字节编码,最多表示范围0x00-0xFF,255个字符,中文使用了双字节编码。上图中ANSI下中文“伟大的国际”,对应就是CEB0 B4F3 B5C4 B9FA BCCA。

在简体中文操作系统中,ANSI编码对应就是GB2312编码,日文操作系统下,ANSI就是JIS编码,不能将不同语言内容存储在同一个ANSI编码文本中,因为ANSI编码限制无法区分编码所对应的语言类型。

2.unicode是国际通用编码,所以,可以搜索出来。

二、GB2312/GBK

GB2312/GBK,汉字国标编码,属于双字节编码,其中英文字母部分和iso8859-1一致,GBK编码能同时表示简体字和繁体字,GB2312只能表示简体字,GBK则兼容GB2312编码。

三、UTF-8

UTF-8本来设计主要用于网络传输,优点是单字节字节编码所以不用考虑字节序问题,但是目前也被应用在本地文档存储格式上, 上面图中“伟大的国际”占用15个字节位,每个汉字占用3字节编码。UTF属于不定长编码,每字符长度从1-6字节不等。

上图中EF BB BF就是指UTF-8,FE FF就是指UTF-16,更多标志参考文末说明。

三、UNICODE

UNICODE是国际通用编码标准,定义了所有可用来表示字符的数值集合(code point),而我们常说的UNICODE编码则是指UTF-16 LE,UTF-16是Windows上默认的Unicode编码方式,常用的Word文档、标准化软件等都是使用Unicode编码,所以,操作系统、浏览器等默认也都支持UNICODE编码文档。上图中的UNICODE是定长双字节编码,UNICODE编码中除了英文部分,其它语种编码跟其它编码格式都不兼容。

此外,还有Unicode big endian(大端)的说法,Unicode与Unicode big endian的区别就是在编码时小头优先与大头优先的区别。默认是小端存储,这属于编程方面的知识,普通用户无需关注,使用默认的UNICODE即可。 

其它,还有ISO8859-1(Latin-1)等很多种编码格式,因为使用并不主流,不再介绍,有兴趣可搜索维基百科。

文件头编码标志如下:

  • EF BB BF    UTF-8
  • FE FF     UTF-16/UCS-2, little endian
  • FF FE     UTF-16/UCS-2, big endian
  • FF FE 00 00  UTF-32/UCS-4, little endian.
  • 00 00 FE FF  UTF-32/UCS-4, big-endian.

UCS是ISO制定标准,只是命名不同,支持格式范围有点差别。本文先粗略整理了一下,后续再作完善!

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.