找回密码
 立即注册

QQ登录

只需一步,快速开始

教程经验总索引TVMW5/小日本5 索引【视频转换】小日本4/TE4XP 索引【视频转换】TAW4 / TDA3 索引【DVD打包软件】
Nero 索引DVD-Lab 索引【DVD打包软件】编解码器 索引 【必读】固顶帖011号
查看: 955|回复: 3

[资料] 关于编码:ansi、GB2312、unicode与utf-8的区别(操作系统和浏览器)

[复制链接]

9334

威望

908

金钱

1万

贡献

管理员

自由的灵魂

积分
100569
主题
5293
回帖
26240
注册时间
2003-4-10
最后登录
2024-12-21
发表于 2019-1-24 21:32:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
【转贴来源:https://blog.csdn.net/chruan/article/details/8812110】


  终于对编码有一定的认识,一说编码,就tmd的恶心。

关于编码:ansi、GB2312、unicode与utf-8的区别

  先做一个小小的试验:

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

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

  原因:

  1.中文操作系统默认ansi编码,生成的txt文件默认为ansi编码,所以,可以搜索出来。

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

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

  按照utf-8创始人的愿望:  
端(unicode)——传输(utf-8)——端(unicode)
但是,后来,许多网站开发者在开发网页时直接使用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了。

  我(不是程序员)这几年一直因为编码问题,感到非常困惑,查了许多资料,在国际文档的实际应用中也遇到过许多问题,所以,“感性”地总结了上述观点,不一定准确(或者说,不一定正确)。



IsaacZ的发言中如果提到任何字母缩写或专有名词,在本论坛中一般都能搜索到。点此立即搜索点拨论坛。如有搜索不到的,请尝试搜索百度百科,或者跟帖提问。
发帖前请注意看置顶帖。如果你发现自己的问题没有得到回答,说明你的问题提错了地方或者提问前未先阅读版规。

51

威望

5148

金钱

228

贡献

管理员

孤魂野草

积分
6424
主题
168
回帖
2211
注册时间
2011-12-18
最后登录
2024-9-8
QQ
发表于 2019-1-25 09:40:17 | 显示全部楼层
这一篇不是很好,用词方面没有区分Unicode和UTF16
回复

使用道具 举报

9334

威望

908

金钱

1万

贡献

管理员

自由的灵魂

积分
100569
主题
5293
回帖
26240
注册时间
2003-4-10
最后登录
2024-12-21
 楼主| 发表于 2019-1-25 10:18:07 | 显示全部楼层
伤心的笔 发表于 2019-1-25 09:40
这一篇不是很好,用词方面没有区分Unicode和UTF16

这一篇直接使用了 “Unicode编码” 这样的表述,并和UTF-8并列比较,感觉怪怪的。根据另一篇中的表述:
UTF-16:其本身就是标准的 Unicode 编码方案,又称为 UCS-2,它固定使用 16 bits(两个字节)来表示一个字符。
作者的意思应该就是指的 UTF-16。

作为专业人士,你应该在这些基础知识上有更深刻的理解,欢迎进一步科普。
IsaacZ的发言中如果提到任何字母缩写或专有名词,在本论坛中一般都能搜索到。点此立即搜索点拨论坛。如有搜索不到的,请尝试搜索百度百科,或者跟帖提问。
发帖前请注意看置顶帖。如果你发现自己的问题没有得到回答,说明你的问题提错了地方或者提问前未先阅读版规。
回复

使用道具 举报

51

威望

5148

金钱

228

贡献

管理员

孤魂野草

积分
6424
主题
168
回帖
2211
注册时间
2011-12-18
最后登录
2024-9-8
QQ
发表于 2019-1-25 18:02:23 | 显示全部楼层
本帖最后由 伤心的笔 于 2019-1-25 18:04 编辑
IsaacZ 发表于 2019-1-25 10:18
这一篇直接使用了 “Unicode编码” 这样的表述,并和UTF-8并列比较,感觉怪怪的。根据另一篇中的表述:作 ...

确切的说是UTF-16 LE

UCS-2 和 UTF-16 LE 也是不一样的。UCS-2是一个集合,是Unicode字符集的真子集,只包括用两个字节表示的字符。UCS-4集合和Unicode字符集是一样的。
UTF-16 编码(无论是LE还是BE)表示的集合是Unicode字符集,而非UCS-2,一个字符可能是两个字节或四个字节(比如emoji)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|点拨论坛 |网站地图

GMT+8, 2024-12-22 14:42 , Processed in 0.061437 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表