最近整理硬碟,硬碟裡有很多類似
壋彈壆晘偱桙偝傟傑偣傫偐 乣彮彈媧寣昉偺丄偍歲晘梀傃乣的亂碼檔名
產生原因其實很簡單,我這個檔案本身是shift-jis(日文)編碼的,在我的中文作業系統裡被當做gbk解碼就變成亂碼了。
所以如果僅僅修復文名的話,只需要
str.encode('gbk').decode('shift-jis')
就可以實現了。
但是如果這行語句處理到原本不是亂碼的,反而就變成亂碼了。
為了自動化處理亂碼檔案,還需要識別出哪些是亂碼。
根據我的測試,發現這些亂碼檔案,往往可以轉成gbk但是不能轉成gb2312。所以我就先嘗試將檔名編碼成gb2312和shift-jis如果報錯,就判斷是亂碼,轉碼成gbk,再解碼成shfit-jis。
我實現的**如下:
import os.path
import os
defmess_det
(input):
try:
input.encode('gb2312')
return
'zh'
except:
pass
try:
input.encode('shift-jis')
return
'jp'
except:
pass
try:
name2=name.encode('gbk').decode('shift-jis')
return
'mess'
except:
pass
for root, dirs, files in os.walk(r"path", topdown=false):
for name in files:
mess=mess_det(name)
if mess=='mess':
new_name=name.encode('gbk').decode('shift-jis')
os.rename(os.path.join(root,name),os.path.join(root,new_name))
for name in dirs:
mess=mess_det(name)
if mess=='mess':
new_name=name.encode('gbk').decode('shift-jis')
os.rename(os.path.join(root,name),os.path.join(root,new_name))
雖然不知道會不會有bug,但是我處理了不少檔案了,還沒出問題。 修復U盤亂碼
我表示使用了乙個chkdsk f h 就搞定了,留下來做備份 我的u盤一直都好好的 1g 臺電 今天在朋友的機子上拷了2個word檔案,拷了過了一會裡面的檔案就變成了亂碼。開始我以為是中毒了,結果防毒也沒有,殺了好幾次 下了個u盤專殺也沒病毒!刪也刪不掉,一刪就顯示 無法讀取原始檔!裡面的檔案乙個個...
U盤檔案亂碼最新修復方法
我的u盤一直都好好的 1g 臺電 今天在朋友的機子上拷了2個word檔案,拷了過了一會裡面的檔案就變成了亂碼。開始我以為是中毒了,結果防毒也沒有,殺了好幾次 下了個u盤專殺也沒病毒!刪也刪不掉,一刪就顯示 無法讀取原始檔!裡面的檔案乙個個都變成了4g 50g。我的u盤才1g 裡面有乙個很久才完成的馬...
python讀取檔案亂碼
方法一 使用codecsimportcodecsf codecs.open nlpir readme.txt r gbk line f.readline whileline printline,line f.readline f.close 上面的方法很慢,可以直接讀取整個檔案codecs.open...