由于Windows(GBK编码)和Linux(UTF-8编码)之间有很多文件交换工作,因此它很容易遇到字符编码问题,例如:
- 在Windows系统上其名称包含中文字符的zip / tar文件,在Linux系统上将其解压缩/取消存储。
- 运行迁移的旧版Java Web应用程序(在Windows系统上设计,使用JSP中的GBK编码),该应用程序将以GBK编码的文件写入磁盘。
- ftp在Windows FTP服务器和Linux客户端之间获取/输入以GBK编码的文件。
- 在Linux中切换LANG环境。
前面提到的常见问题是文件定位/命名。谷歌搜索后,我收到了一篇文章《在Linux中使用Unicode》 http://www.linux.com/archive/feed/39912,它说:
操作系统和许多实用程序都没有意识到文件名中的字节代表什么字符。
因此,可能会有2个使用不同编码的English.txt文件:
[root@fedora test]# ls
???? 中文
[root@fedora test]# ls | iconv -f GBK
中文
涓iconv: illegal input sequence at position 7
[root@fedora test]# ls 中文 && ls $'\xd6\xd0\xce\xc4'|iconv -f gbk
中文
中文
问题:
- 是否可以配置linux文件系统使用固定字符编码(例如NTFS内部使用UTF-16)来存储文件名,而不管LANG / LC_ALL环境如何?
- 或者,我真正想问的是:是否可以让
$'\xe4\xb8\xad\xe6\x96\x87.txt'
zh_CN.UTF-8环境中的文件名中文.txt($'\xd6\xd0\xce\xc4.txt'
)和zh_CN.GBK环境中的文件名中文.txt()引用同一文件? - 如果它不是可配置的,那么是否有可能修补内核以在文件系统和当前环境之间转换字符编码(只是一个问题,不是请求实现)?并在可能的情况下影响多少性能?