linux - 您可以在同一文件系统上使用不同的编码对文件名进行编码吗(在 Linux 上)
问题描述
在特定的文件系统上,它定义了文件名的创建编码是什么,或者它们可以使用任何编码创建。
即在一个文件系统上,将一些文件名编码为 UTF-8 和一些编码为 UTF-16 或不编码是否合法。我不是在谈论文件名的内容,只是文件名本身。
解决方案
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 是最常用的。
推荐阅读
- swift - IKImageView 不显示图片(Cocoa Swift)
- ios - 如何检测设备(iphone)是否有物理主页按钮?
- lean - 是什么让自然数在超时方面如此特别?
- c# - 结合非托管 C++ 项目和 C# 项目的 MS Visual Studio 解决方案
- php - 从 xampp 5.6 停止 mysql 将导致 xampp 7.0 xampp mysql 服务器停止
- javascript - Materialize CSS 无法以编程方式打开可折叠元素
- github - 无法从 Github 桌面应用程序发布到 github.com
- symfony - Symfony Bundle 允许用户互相发送消息
- c# - 如何从先前旋转的结束位置旋转wpf中的控件
- android - Xamarin 应用程序(Android)无法从物理设备访问本地网络中的 mongodb 服务器