解壓文名字亂碼是因為在解壓縮的時候,預設了一種解碼,那就是cp437
,因此要解決這個問題,首先要將解碼出來的再次加密回去,在用gbk
解碼出來。
因為已經解壓縮出來了,不能再通過解壓縮來完成上述步驟(除非修改原始碼),這裡採用遍歷資料夾方式將檔案名字改為正常中文
#傳進入完整的資料夾名稱,將名字格式進行更替
defnamessolve
(folderpath)
:for dirpath, dirnames, filenames in os.walk(folderpath)
:#進入需要改正名字的資料夾
for filename in filenames:
try:
newfilename = filename.encode(
'cp437'
).decode(
'gbk'
)#嘗試對檔案名字進行編碼解碼
filefullpath = os.path.join(dirpath,filename)
#如果成功,則將檔案原始路徑算出
newfilefullpath = os.path.join(dirpath,newfilename)
os.rename(filefullpath,newfilefullpath)
#將名字進行替換
except
:print
('檔案更名失敗!'
)for dirname in dirnames:
try:
newdirname = dirname.encode(
'cp437'
).decode(
'gbk'
) dirfullpath = os.path.join(dirpath,dirname)
newdirfullpath = os.path.join(dirpath,newdirname)
os.rename(dirfullpath,newdirfullpath)
#將名字進行替換
except
:print
('資料夾更名失敗!'
)
此遍歷方式有問題,不能完整遍歷完,最好使用資料夾遞迴呼叫方式
找到python安裝資料夾 進入lib 找到zipfile.py原始碼
將此檔案中的cp437
替換為gbk
解壓的時候文字編碼很重要,如果編碼不對,會導致檔案找不到等錯誤!
SharpZipLib解壓縮時中文名亂碼 解決
icsharpcode.sharpzlib這個元件直接使用會出現解壓縮中文時出現錯誤。所以需要更改一下作者的源 以下為版本0.86為例。1 在源 中找到 zipinputsteam.cs檔案,開啟它然後定位到 getnextentry 這個函式內。2 在getnextentry裡面有一句 是得到檔名...
python解壓縮檔案
一 壓縮檔案與檢視壓縮檔案資訊 import zipfile importos 要壓縮的檔案目錄 compress dir r e 介面文件 doc zipfile name r e 介面文件 test123.zip zip obj zipfile.zipfile zipfile name,w zi...
解壓縮檔案
public static fastzip fz new fastzip 壓縮檔案 壓縮檔案的路徑與名稱 被壓縮的檔案路徑 解壓密碼 null代表無密碼 public static string filetozip string zipfilepath,string filepath,string ...