文件,文本文件以及编码——乱码探源(1)
在前面的 字符集编码系列 中,已经探讨了几大主要的字符集编码。在此基础之上,这里将进一步探讨编码的应用及乱码的根源,我们先从基本的文件说起。 文件 文件(内容)就是字节序列。文本文件也是文件,所以它也是字节序列。 文件名与文件内容 通常说到文件时,指的是文件内容,但文件还有文件名,文件名与文件内容是分开存储的。 你可以在硬盘上新建一个文件,它的大小为0.如下: 但它是有文件名的,比如上述的“新建文本文档.txt“,保存这些名字自然也要占用空间,只不过它与文件内容是分离的。 这些由操作系统的文件系统模块负责。 文件名 是一段文本,因此它会涉及字符集编码。 文件内容 则视情况而定: 1. 文本文件,肯定会涉及字符集编码。 常见的比如txt,html,xml以及各种源代码文件等等。 2. 非文本文件,比如图片文件jpg,gif之类,自然跟字符集编码无关了。 有些文件,比如Word的doc之类的,混合了图片跟文本在里面,可以想像,其中的文本部分自然也会牵涉到字符集编码的问题,只不过这些编码不由我们去控制,我们通常也无须去关心。 文件名编码 文件名是一串文本,因此它必然涉及某种字符集编码,只不过这种编码是由操作系统决定的,我们无权干预。 那么,它用的是什么编码呢?在Windows下,可以简单做些实验。我们可以弄些奇怪的文件名如“★★★★.txt”,如下: 结果也能保存