首页 > 解决方案 > 您可以在同一文件系统上使用不同的编码对文件名进行编码吗(在 Linux 上)

问题描述

在特定的文件系统上,它定义了文件名的创建编码是什么,或者它们可以使用任何编码创建。

即在一个文件系统上,将一些文件名编码为 UTF-8 和一些编码为 UTF-16 或不编码是否合法。我不是在谈论文件名的内容,只是文件名本身。

标签: linuxfile

解决方案


Linux 不会将文件名或路径解释为具有任何特定编码。文件名可以包含任何字节,以任何顺序,除了 NUL (0x0) 和 / (0x2F)。由应用程序决定解释。

由于禁止 NUL 字节,UTF-16 不能在实践中使用(它的编码形式通常包含 NUL 字节)。

NTFS 的磁盘格式要求文件名以 UTF-16 存储。在这种情况下,iocharset将使用 mount 选项。NTFS 中的所有 UTF-16 名称都使用此编码转换为在 Linux 文件系统 API 中可见(反之亦然)。UDF、ISO9660、JFS 和 FAT 文件系统还支持以特定编码存储 Unicode 代码点,因此iocharset对它们也很有意义。

在实践中,UTF-8 是最常用的。


推荐阅读