2021-05-12 14:32:11
Debain 下掛載硬碟檔名亂碼問題解決
最近在折騰使用樹莓派做NAS,因為硬碟格式被我格式化成了Ext4的檔案系統,所以需要在Windows下讀寫Ext4檔案系統的話,需要先安裝Ext2Fsd來掛載Ext4,然後把檔案拷貝到一塊4T的紅盤去的,但是在使用Ext2Fsd來掛載硬碟的時候,忘記選擇utf-8編碼了,導致編碼處是:“自動”,於是在Windows下編碼就是GB2312的編碼。
當把硬碟掛在到樹莓派的系統中去的時候,GB2312的檔案編碼會變成一堆“?????”的形式了。
方法一:
首先想到的解決方法就是修改mount的設定項,修改編碼為utf-8:
mount -o utf-8 /dev/sdb1 /data
但是發現-o 這個引數在Debain下居然沒有,報錯:
wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so
方法一失敗。
方法二:
好吧,既然修改mount的設定項不行,那麼我們就檢查系統語言的編碼項,是否開啟的是zh_CN.UTF-8,不行是再試試zh_CN.GB2312或者zh_CN.GBK
vim /etc/locale.gen #去掉zh_CN.UTF-8前的#號
sudo locale-gen
export LANG="zh_CN.UTF-8" #(也可以加到~/.bashrc,不用每次手工打)
但是很遺憾我嘗試了,都不行,方法二失敗。
方法三
既然方法一和二都不行,那麼我們就只能想新的辦法了,既然只是檔名稱的編碼錯誤,那麼我們就轉換檔案的編碼,不過這樣有一個問題,我的硬碟裡面有幾萬個檔案,如果手工一個個來的轉換的話,oh~,我會瘋掉的~~ 我堅信一定有工具可以批次解決的,去找Google大叔吧~~~
Mr柿子: Google 大叔,Linux下有什麼工具可以批次更改檔名編碼的?
Google: 有啊,Linux是萬能的。在Linux中專門提供了一種工具convmv進行檔名編碼的轉換,可以將檔名從GBK轉換成UTF-8編碼,或者從UTF-8轉換到GBK。
Mr柿子: 吼吼~,那麼好,那麼在哪裡可以下載到呢?
Google: 你使用的是Debain吧?那麼直接sudo apt-get install convmv
來安裝啊。
Mr柿子: Ok,Thanks.
好了,既然工具找到了,我們來看看用法:
convmv -f 現有檔案編碼 -t 新的編碼 [選項] 檔名
一些引數解釋: -r 是遞迴處理子資料夾(要的就是這個功能,耶~) –notest 真正進行操作,請注意在預設情況下是不對檔案進行真實操作的,而只是試驗。 –list 顯示出來所有支援的編碼 –unescap 用來做一下跳脫,比如把%20變成空格的
那麼我們來轉換,我需要把GBK編碼的檔名,轉換成UTF-8編碼,那麼寫一個Shell指令碼檔案來幫我們執行吧。
#!/bin/sh
for i in `ls`
do
convmv -f GBK -t UTF-8 –notest $i;
done
對了,還有一個??警告。
千萬不要在NTFS和FAT的檔案系統中使用這個命令哦,否則可能產生意外結果。 如果要在Linux中正確的顯示NTFS和FAT的中檔名,可以通過mount引數來解決,參考方案二
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-04/143071.htm
相關文章