C++ 使用UTF8以编程方式装载FAT32文件系统

C++ 使用UTF8以编程方式装载FAT32文件系统,c++,linux,C++,Linux,如何使用“mount()”函数(来自“mount.h”,请参阅“man 2 mount”)以UTF8方式安装FAT/FAT32设备 这是我用来挂载它的相关代码,直到现在: mount_result = mount(device_node, device_mount_point, fstype, MS_NOATIME, ""); 谢谢, 尼古拉来自: 数据参数由不同的文件系统解释。通常,它是一个由逗号分隔的选项组成的字符串,该文件系统可以理解 从“vfat的安装选项”的主页: utf8: UTF

如何使用“mount()”函数(来自“mount.h”,请参阅“man 2 mount”)以UTF8方式安装FAT/FAT32设备

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

mount_result = mount(device_node, device_mount_point, fstype, MS_NOATIME, "");
谢谢, 尼古拉

来自:

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

从“vfat的安装选项”的主页:

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

因此,这将为您提供所需的行为:

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

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

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

我认为您可能需要尝试“utf8=1”。

如果要信任手册页,
iocharset
不在
vfat
的选项中。您可能正在考虑使用
ntfs
(无论如何它都不推荐使用)
utf8
看起来是正确的参数。正确的答案是传递“iocharset=utf8”。在2.6.33.2内核上测试,从util linux ng 2.15.1装载(支持libblkid)。手册页可能有误。嗨,比班德,我希望你能读到这条消息。这个评论与这个答案无关。我知道我违反了很多规则,但我只是想在读了你的问题后和你谈谈。听说你失业了,我非常难过。然后我看了一下你的个人资料,你从2013年9月(也就是你发布这个问题的几个月后)起就没有任何活动了。我很抱歉这样跟踪你,但我很好奇。。。(续)想知道你发生了什么事。自从那件可怕的事情发生在你身上已经快两年了。你现在还好吗?你找到另一份工作了吗?我真的希望你现在做得更好。我希望你能更坚强地度过难关。我真的希望你花点时间来回答我的好奇心,如果不是太多的话!