为什么文件内容会出现乱码,而文件名不会出现乱码 当我们下载一些文件时(文本格式),由于编码不同,文件的内容可能会出现乱码,可是为什么文件名不会乱码?
其实应该叫做页码。 codepage
文件名和文本内容是两个层次的东西,文件名是在传输时由操作系统或服务软件之间确定页码进行交换的,而文件内容是直接传输彼此不作转化(FTP的文本模式除外,且它也不帮你转换页码),看一下鸟哥的私房菜中对于 linux 文件系统介绍,你会发现文件名和文件内容是存储在不同地方的。也就是说文件名和文件内容的关系其实没有表面看起来那么紧密!
纯文件的编码是一个复杂的问题! 首先,操作系统诞生在西方,他们的符号文字加上标点再加上特殊控制符也不过区区 100 多个!对他们来讲,1 个字节足矣! 然后,为了电脑上显示中文,国家制定了 gb2312-80 标准共含 6763 个汉字。最少需要 2 个字节来表示一个中文。还有谁记得 ucdos 吗? 同时,情况开始复杂了,各个使用象形文字国家都有自己的文字,一样使用了这种本地化的方式制定属于他们的页码。(应该是我们向其它的国家学习了这种方式吧,这不重要) 糟糕的是大家各自编得开心完全没想到国与国之间交流时怎么确定文本的页码! 纯本文文件就是只存储文字的编码,完全没有声明页码的地方。 当然,这只是我们象形文字国家的麻烦,以上页码、或者现在流行的 unicode/utf8 都好,都是完全兼容 ascii 的。对于西方人来都不是问题。
还有 windows 的隐藏 bom 头也是个麻烦事,哪天你发现传到服务器的 php/python 脚本不能正常运行,很可能就是这个东西引起的。只能说 ms 的历史包袱太重了,很多东西他想改也很难。