UNICODE GBK UTF-8等文本编码

UNICODE,GBK,UTF-8区别

关于编码ansi、GB23十二、unicode与utf-8的区别html

先作一个小小的试验:程序员

在一个文件夹里,把一个txt文本(文本里包含“今天的天气很是好”这句话)分别另存为ansi、unicode、utf-8这三种编码的txt文件。而后,在该文件夹上点击右键,选择“搜索(E)…”。浏览器

搜索“天气”二字,能够搜索出ansi和unicode这两种编码的txt文件,搜索不出utf-8编码的文件。markdown

缘由:网络

1.中文操做系统默认ansi编码,生成的txt文件默认为ansi编码,因此,能够搜索出来。网站

2.unicode是国际通用编码,因此,能够搜索出来。编码

3.utf-8编码是unicode编码在网络之间(主要是网页)传输时的一种“变通”和“桥梁”编码。utf-8在网络之间传输时能够节约数据量。因此,使用操做系统没法搜索出txt文本。url

按照utf-8创始人的愿望:操作系统

端(unicode)——传输(utf-8)——端(unicode)code

可是,后来,许多网站开发者在开发网页时直接使用utf-8编码。

端(utf-8)——传输(utf-8)——端(utf-8)

因此,在浏览器上看到的编码是:unicode(utf-8)。正由于在浏览器上这么并列地列出unicode(utf-8),形成许多网友(甚至很多程序员)误认为unicode=utf-8。其实,按照utf-8创始人的原意,在开发网页时使用utf-8编码是错误的作法,而且,早期的浏览器也不支持解析utf-8编码。可是,众人的力量是巨大的,微软不得不“趋炎附势”,在浏览器上支持解析utf-8编码。

问题是:utf-8编码影响了网站开发者,或者说,网站开发者“扩展”了utf-8编码的使用范围。可是,网站开发者仍然没法影响各种文档的开发者,因此,word文档和一些国际通用的文档仍然使用unicode编码而不使用utf-8编码。

好比:“严”的Unicode码是4E25,UTF-8编码是E4B8A5,二者是不同的。

在中文和日文操做系统里生成的(txt和xml)文件的编码虽然都是ansi,可是,在简体中文系统下,ansi 编码表明 GB2312
编码,在日文操做系统下,ansi 编码表明 JIS 编码。不一样 ansi
编码之间互不兼容,当信息在国际间交流时,没法将属于两种语言的文字,存储在同一段 ansi 编码的文本中。

结论:国际文档(txt和xml)使用unicode编码是正宗作法;操做系统和浏览器都可以“理解”unicode编码。浏览器“迫于压力”才“理解”utf-8编码。可是,操做系统有时只认unicode编码。

Unicode与Unicode big endian的区别:你吃鸡蛋时先吃小头仍是先吃大头?Unicode与Unicode big
endian的区别就是在编码时小头优先与大头优先的区别。“随波逐流”使用Unicode就OK了。
ref http://blog.sina.com.cn/s/blog_a547eff001012igt.html(简洁明了)
ref http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html

ANSI编码

不一样的国家和地区制定了不一样的标准,由此产生了 GB23十二、GBK、Big五、Shift_JIS 等各自的编码标准。这些使用 1 至 4 个字节来表明一个字符的各类汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操做系统中,ANSI 编码表明 GBK 编码;在日文Windows操做系统中,ANSI 编码表明 Shift_JIS 编码。 不一样 ANSI 编码之间互不兼容,当信息在国际间交流时,没法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。 固然对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节表明1个字符。这一点是ASNI编码与Unicode编码之间最大也最明显的区别。
ref http://baike.baidu.com/link?url=yt4s_FysZ9KUl4WxFeXyv5pHkQsvrRiZgWbU82EYj9XTfYmJgbZMe5mOYUbM3GsM7DR9rcFf4QRWbGuI9wQrVa(百度百科)

相关文章
相关标签/搜索