終於讓fat格式的U盤不再顯示亂碼了

2021-05-23 18:12:29 字數 1939 閱讀 4699

我使用的ubuntu 8.04.1,kde4.1.2桌面環境,一直以來存在乙個問題,如果掛載fat檔案格式的u盤或者可行動硬碟時,中文資料夾和檔案的名字就變成了一堆的????。

在網上查閱了很多的資料,目前找到了一下這個可行的解決方案。

修改/usr/share/hal/fdi/policy/10osvendor/目錄下的20-storage-methods.fdi檔案

sudo vi /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi

hald-addon-storage

的後面新增

true

出現這個問題的根本原因是,fat檔案系統並沒有規定使用何種字符集編碼來存貯資料夾和檔案的名字。windows在具體操作的時候,根據具體的區域設定來選擇所使用的字符集編碼,中國大陸區域使用gb2312,**頁是cp936;台灣區域使用big5,**頁是cp950。

在掛載fat檔案系統的時候,需要根據fat具體使用的字符集編碼來指定iocharset引數,來正確掛載fat檔案系統。

在我這裡,我使用的是windows簡體中文版,所以使用iocharset=cp936。

關於**頁,維基百科裡面有說明。

這裡有一篇關於「

**頁地獄」的文章,講述了亂碼的深層原因。

至於key="volume.mount.valid_options.iocharset=cp936"這一串東西是怎麼來的,這是因為我在/usr/share/hal/fdi/policy/10osvendor/目錄下的20-storage-methods.fdi中找到了這麼幾行東東

utf8

shortname=

codepage=

iocharset=

umask=

dmask=

fmask=

uid=

flush

不同的發行版似乎略有不同,比如,網上很多關於fedora的文章裡面就寫成了key="volume.mount.options.iocharset=cp936

為什麼這樣修改可行的原理尚待學習中,貌似是修改了hal的policy的原因。

對了,修改儲存後別忘了重啟hal

sudo /etc/init.d/hal restart

******************************==

2023年10月30日追加:

上面的文字只對ubuntu8.04及以前的版本有歷史意義。

就像有人提到的gnome就不需要在hal新增手工偵測codepage的配置而可以直接掛在簡體中文(正體中文、日文)的fat檔案系統一樣,在 ubuntu8.10的kde4中,我們也不再需要對hal的配置做任何修改,而可以直接掛在fat的檔案系統了。其實這樣較好,codepage的偵測應該放在桌面環境的層面比較好,如向上面這樣在hal中強制制定fat的codepage,那麼遇到其他codepage的fat檔案系統,就會亂罵依舊。而通過桌面環境對插入的fat檔案系統的codepage進行偵測,然後在決定如何mount,這樣還是比較合適的。

只是不知道kde4是通過怎樣的策略去實現的,我能想到的有兩種,一種是在fat中記錄codepage;一種是根據區域設定選擇codepage,比如zh_cn的 codepage就自動指定為cp936。第一種方法的問題是可能要擴充套件fat的標準,因為不知道原先fat是否記錄codepage的(我估計是沒有記錄,不然不會有亂碼一籮筐),另外對於沒有codepage記錄的fat,需要進行codepage猜測;第二個方法的弊端是如果我的區域設定是 zh_cn,如果我插入乙個被日文windows所使用的fat檔案系統,亂碼依舊。

U盤格式選擇 FAT32 exFAT NTFS

首推 exfat,無最大檔案限制,而且在windows linux mac ios下都可以使用 ntfs 無最大檔案限制,不過只能在windows下讀取資料,這種檔案系統更適合於硬碟 fat32 最不建議用,雖然可以在ios下讀取,但是因為有4g最大檔案限制,超過4g的單個檔案無法放入u盤,太矯情 ...

製作fat格式的linux U盤啟動盤

說明 此方法製作的啟動盤為fat格式,不需要格式化為ext2格式 不需要用usb boot等軟體先做成dos啟動u盤 資源所需 syslinux,我的是3.63 linux安裝盤,我的是redhat9 第一張光碟 方法 1.將u盤格式化為fat,fat32沒試不知是否行 2.解壓syslinux 3...

linux下FAT32格式u盤唯讀的問題及解決方法

以下是網上看到的解決辦法 plain view plain copy 其實是掉電保護,之前掛在的sd變成了制度檔案,只需要將sd卡重新掛載一遍就ok了.fat filesystem panic dev mmcblk0p4 fat free clusters deleting fat entry be...