使用python修復檔案亂碼

2021-08-20 23:20:25 字數 1382 閱讀 6530

最近整理硬碟,硬碟裡有很多類似

壋彈壆晘偱桙偝傟傑偣傫偐 乣彮彈媧寣昉偺丄偍歲晘梀傃乣

的亂碼檔名

產生原因其實很簡單,我這個檔案本身是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...