用UTF8编程地挂载FAT32文件系统

Programmatically mounting a FAT32 filesystem with UTF8

本文关键字:FAT32 文件系统 UTF8 编程      更新时间:2023-10-16

如何使用"mount()"函数(来自"mount.h",请参阅"man 2 mount")挂载FAT/FAT32设备,以便将其挂载为UTF8?

这是我到现在为止用来挂载它的相关代码:

mount_result = mount(device_node, device_mount_point, fstype, MS_NOATIME, "");

谢谢,尼古拉

从手册:

data参数由不同的文件系统解释。通常,它是由逗号分隔的选项组成的字符串,该文件系统可以理解。

在mount(8)的手册中," mount options for vfat":

utf8:UTF8是控制台使用的文件系统安全的Unicode 8位编码。它可以通过这个选项为文件系统启用。如果设置了'uni_xlate',则禁用UTF8。

因此,这应该为您提供所需的行为:
mount_result = mount(device_node, device_mount_point, fstype, MS_NOATIME, "utf8");

mount命令的最后一个参数是由内核中的文件系统驱动程序解释的字符串。这与您传递给mount shell命令的方式相同。对于UTF8,我认为字符串应该是:

mount_result = mount(device_node, device_mount_point, fstype, MS_NOATIME, "iocharset=utf8");

我想你可能需要试试"utf8=1"