linux - 你可以在同一文件系统上使用不同的编码来编码文件名吗(在Linux上)

标签 linux file

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

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

最佳答案

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

由于禁止NUL字节,UTF-16在实际中无法使用(其编码形式经常包含NUL字节)。

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

实际上,UTF-8 是最常用的。

关于linux - 你可以在同一文件系统上使用不同的编码来编码文件名吗(在Linux上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61656612/

相关文章:

linux wlan0 网络禁用(错误 siocsifflags 操作不允许),如何启用它?

C# EnumerateDirectories 不应使用本地化路径

c++ - 在 C++ 98 中优化 vector 过滤

C:替换文件中的字符串而不使用临时文件或加载到内存中

android - 使用 Apache FileUtils 复制文件时如何显示进度条?安卓

c++ - 如何查找和读取二进制文件?

python - 运行 django 本地服务器而不是在 shell 别名中打开 chrome 页面

linux - 替换 2 个匹配词之间的所有行

c - 在 popen 中窒息 "file or directory not found"消息

Java 进程作为非 root 占用 100% CPU,但作为 root 没问题