windows和Linux中文本编码的疑惑,请高人指教

系统字体配置、中文显示和输入法问题
回复
智上思下
帖子: 86
注册时间: 2009-11-02 21:56

windows和Linux中文本编码的疑惑,请高人指教

#1

帖子 智上思下 » 2010-12-22 12:40

先列举以下事实(不对之处还请指教,在此学习了):
1. windows下,用记事本创建的文本文件默认为ANSI编码,在大陆当然就是用的GB2321编码了。
2.记事本创建的ANSI文件是不具有文件识别头的(不知道叫什么,反正就是插入在文件开头区别不不同编码方式的几个字节),自第一个字节起便是文件内容。
3.用记事本另存为创建的UTF-8编码方式的文件是具有EF BB BF三个字节的文件识别头的。因此自第四个字节起的编码才是真正的文件内容。
4.用记事本另存为创建的Unicode编码方式的文件是具有FF FE两个字节的文件识别头的。因此自第三个字节起的编码才是真正的文件内容。
5.显然,记事本读取文件时自动把文件头信息滤去,只显示其后的文本。
(空一行,下面是Linux的:)
6.Linux下的默认编码通通为UTF-8编码。
7.在Ubuntu环境下,用gedit创建的文件默认是UTF-8编码,而且不具有文件头。特别强调,不具有EF BB BF的文件识别头。
(联系:)
8.Linux下文件在windows中记事本都能正常显示
9.Linux下创建的UTF-8文件在记事本中能正常显示。(虽然不具有EF BB BF的文件头)
问题是,记事本是怎么识别出Linux下创建的不具有文件头的UTF-8文件(UTF-8编码)和自己创建的ANSI文件(GB2321编码)并用正确的编码去正常显示的呢?
补充:
10.用gedit打开记事本保存的ANSI文件时不能正常识别,提示选编码,选则GB2321后正常显示。
11.用gedit打开记事本保存的UTF-8文件(含文件头信息),正常显示,无提示。
12.用gedit打开记事本保存的Unicode文件正常显示,但是图标预览上头两个字节确实乱码,呵呵,这一点很怪,难道图标预览上显示时是用UTF-8去解码的,而打开时自动滤去文件头?。
上次由 智上思下 在 2010-12-22 12:55,总共编辑 1 次。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: windows和Linux中文本编码的疑惑,请高人指教

#2

帖子 BigSnake.NET » 2010-12-22 12:47

xp 下的记事本识别不出的
中文会乱码
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
acer4740
帖子: 1405
注册时间: 2010-09-13 19:04
来自: 0xFF00EE

Re: windows和Linux中文本编码的疑惑,请高人指教

#3

帖子 acer4740 » 2010-12-22 12:53

一个vim全部搞定

:em11 :em11 :em11
智上思下
帖子: 86
注册时间: 2009-11-02 21:56

Re: windows和Linux中文本编码的疑惑,请高人指教

#4

帖子 智上思下 » 2010-12-22 12:56

xp 下的记事本识别不出的
中文会乱码
xp?没试过,至少Windows 7是这样。
智上思下
帖子: 86
注册时间: 2009-11-02 21:56

Re: windows和Linux中文本编码的疑惑,请高人指教

#5

帖子 智上思下 » 2010-12-22 13:00

Selection_001.png
Selection_001.png (4.17 KiB) 查看 1156 次
上图,头两个字节乱码,其实是Unicode编码的文件头FF FE而已
回复