登录 | 实名认证,暂停注册 | 在线情况 | 搜索 | 帮助
茗香茶楼百家争茗技术交流文本文件几种编码的区别
    
 
文本文件几种编码的区别
发起人:孙帅  回复数:1  浏览数:7029  最后更新:2021/9/1 14:44:43 by chql001

选择查看 搜索更多相关主题  帖子排序:
孙帅 发表于 2021/8/31 11:30:02
文本文件几种编码的区别
电脑中的txt文本文档,有ANSI、Unicode、Unicode big endian、UTF-8四种形式。

为使计算机支持更多语言,通常使用 0x80~0xFFFF 范围的 2 个 字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。
不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
ANSI编码表示英文字符时用一个字节,表示中文用两个或四个字节。

我们可以用下面的实验,直观比较一下不同编码的区别:
在一个文件夹里,把一个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了。
chql001 发表于 2021/9/1 14:44:43
666666666666666666666666666666666666666666666666666666666666666666666
用户在线信息
当前查看此主题的会员: 1 人。其中注册用户 0 人,访客 1 人。


  • 关于本站 版权声明 联系本站 意见建议 大事记
    Powered by BBSXP 2008 MSSQL © 1998-2024 Yuzi.Net
  • Processed in 0.02 second(s)
    Server Time 2024/4/18 8:44:39