2011-04-12 108 views
2

如何使用「mount()」函數(來自「mount.h」,請參閱「man 2 mount」)以裝入UTF8的方式裝載FAT/FAT32設備?使用UTF8以編程方式安裝FAT32文件系統

這是相關的代碼,我用它來安裝它,直到如今:

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

感謝, 尼古拉

回答

1

的最後一個參數mount命令是在內核文件系統驅動程序解釋的字符串。這與你傳遞給mount shell命令的是一樣的。對於UTF8我相信字符串應該是:

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

如果manpage是可信的,'iocharset'不在'vfat'的選項中,你可能會考慮'ntfs'不管怎樣,'utf8'看起來像是正確的參數 – Piskvor 2011-04-12 11:00:47

+0

正確的答案是通過「iocharset = utf8」,在2.6.33.2內核上測試,從util-linux-ng 2.15.1上安裝(使用libblkid支持)。手冊頁可能是錯的 – 2011-04-12 13:00:03

2

manpage

的數據參數被解釋不同的文件系統。通常它是由該文件系統理解的一串逗號分隔選項。

而且從mount(8)手冊頁, 「安裝選項VFAT」:

UTF8: UTF8是Unicode的所使用的控制檯文件系統安全的8位編碼。可以使用此選項爲文件系統啓用它。如果'uni_xlate'被設置,UTF8被禁用。

因此,這應該給你想要的行爲:

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

我們試過只傳遞「utf8」,它沒有工作:-( – 2011-04-12 12:28:05

1

我想你可能需要嘗試「utf8 = 1」。

+0

嗨BeeBand,我希望你能閱讀這條信息。這個評論並不包括這個答案。我知道我違反了SO規則,但是我只是想在閱讀這個http: //programmers.stackexchange.com/questions/197675/is-there-any-way-to-get-faster-at-solving-bugs-ive-just-had-a-warning-from-my?lq=1 question我感到非常難過,看到你失去了工作,然後我看着你沒有的SO檔案自2013年9月以來已有任何活動(這是您發佈該問題幾個月後)。我很抱歉這樣跟蹤你,但我很好奇......(續) – Chani 2015-07-01 12:37:24

+0

知道你發生了什麼事。這件可怕的事發生在你身上已經差不多2年了。你現在好嗎?你有沒有找到另一份工作?我真的希望你現在做得更好。我希望你通過更強大。 我希望你花一些時間回覆我的好奇心,如果它不是太多的話! – Chani 2015-07-01 12:40:02