假如有两个操作系统,分别是A和B,都是Windows的操作系统
系统A的系统编码是GBK,系统B的系统编码是Shift_JIS
我在系统A中做成一个文本文件(测试.txt),文件内容是“测试测试测试”
然后把这个文本文件拷贝到系统B中,
在系统B中这个文件的文件名显示的还是(测试.txt),但是内容变成乱码了。
内容乱码的原因应该是两个系统的系统编码不一样,
我的问题是既然系统编码不一样,为什么文件名能够正常显示哪?
windows上面文件名的编码格式是统一的
NTFS stores filenames in UTF16
而文件内容,取决于你的设置,以及编码方式
windows操作系统的区域选项中有一个设置,叫做“非unicode使用的语言”,这个设置(而不是windows操作系统本身)决定了你打开一个非unicode编码的文件,用什么本地编码来解释你的文本。
至于文件名也是一样的。只是现代操作系统都使用unicode编码了,没问题了。
早期windows 95时代,拿到繁体的软件安装盘,的确文件名是乱码,所以那时候流行南极星、RichWin等转码的软件。
文件名都是UTF16编码,而文件内容是以ANSI编码存储的。 微软提出了一个叫“代码页”的感念,Ansi在不同的代码页下标识的字符不同,例如,在大陆Ansi表示GBK,GB2312等编码,在台湾表示BIG5编码。用户只需要把系统的代码页(语言和区域设置)设置到自己国家的代码页,就可以很方便地使用自己国家文字的程序和文档了。但是随着发展,代码页越来越多,国际交流原来越频繁,于是,Unicode诞生。你只需要把文件保存一个unicode编码即可,比如UTF8,UTF16