第一篇:字符集和编码II: fat/msdos/vfat(链接至原作者博客)
具体到文件名乱码的问题,需要明确两点
- 第一,文件名作为一个字符串,需要被编码后存入文件系统;
- 第二,Linux内核无非是个特殊的应用程序,它读取文件名,再把文件名以编码后的形式传递出去。
但Linux内核只能逐字节处理编码流(而Windows NT内核是UCS-2的,逐2字节处理编码流),因此必须采用某种单字节编码(这包括所有的不定长编码)进行输出——这就是Linux内核所谓的NLS。
在对文件名的处理上,fat和vfat的区别在于:fat/msdos只支持短文件名(8.3命名法),而vfat加入了对长文件名和UNICODE的支持。
阅读更多