日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Python教程:pythonzipfile出現(xiàn)亂碼怎么解決

在zipfile.ZipFile中獲得的filename有中日文則很大可能是亂碼,這是因?yàn)?/p>

創(chuàng)新互聯(lián)是專業(yè)的靈山網(wǎng)站建設(shè)公司,靈山接單;提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行靈山網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

在 zip 標(biāo)準(zhǔn)中,對(duì)文件名的 encoding 用的不是 unicode,而可能是各種軟件根據(jù)系統(tǒng)的默認(rèn)字符集來(lái)采用(此為猜測(cè)),而zipfile 中根據(jù)文件 flag 檢測(cè)的時(shí)候,只支持 cp437 和 utf-8。

具體zipfile模塊中的源代碼如下:

if flags & 0x800:
    # UTF-8 file names extension
    filename = filename.decode('utf-8')
else:
    # Historical ZIP filename encoding
    filename = filename.decode('cp437')

可見(jiàn)編碼被正確識(shí)別為utf8時(shí)的情況外,都會(huì)被識(shí)別并decode為cp437編碼,但如果實(shí)際是gbk等其他編碼時(shí)就變?yōu)閬y碼了。所以解決的方法在于被decode為cp437后,重新再手動(dòng)轉(zhuǎn)為正確的編碼。

在實(shí)際過(guò)程中可以對(duì)已經(jīng)先用zipfile進(jìn)行解壓,然后對(duì)unzip文件夾中的亂碼文件直接進(jìn)行重命名。具體實(shí)現(xiàn)過(guò)程如下:

import os
def an_garcode(dir_names):
    """anti garbled code"""
    os.chdir(dir_names)
    for temp_name in os.listdir('.'):
        try:
            #使用cp437對(duì)文件名進(jìn)行解碼還原
            new_name = temp_name.encode('cp437')
            #win下一般使用的是gbk編碼
            new_name = new_name.decode("gbk")
            #對(duì)亂碼的文件名及文件夾名進(jìn)行重命名
            os.rename(temp_name, new_name)
            #傳回重新編碼的文件名給原文件名
            temp_name = new_name
        except:
            #如果已被正確識(shí)別為utf8編碼時(shí)則不需再編碼
            pass
        if os.path.isdir(temp_name):
            #對(duì)子文件夾進(jìn)行遞歸調(diào)用
            an_garcode(temp_name)
            #記得返回上級(jí)目錄
            os.chdir('..')
an_garcode(os.getcwd())

眾多python培訓(xùn)視頻,盡在python學(xué)習(xí)網(wǎng),歡迎在線學(xué)習(xí)!


本文題目:創(chuàng)新互聯(lián)Python教程:pythonzipfile出現(xiàn)亂碼怎么解決
文章位置:http://m.5511xx.com/article/cdejesp.html