3

Python 2.xでは、使用しました

"shift-jis".decode('shift-jis').encode('utf-8')

しかし、Python 3.x には str.decode() はもうありません。Python 3.x の同等のコードは何ですか?

アップデート :

より具体的に:

python2 関数は

def unzip(file, dir):
    zips = zipfile.ZipFile(file)
    for info in zips.infolist():
        info.filename = info.filename.decode('shift-jis').encode('utf-8')
        zips.extract(info,dir)

        print(info, filename)

この関数に相当する python3 コードは何ですか?

4

2 に答える 2

5

あなたの更新された質問に:

def unzip(file, directory): # dir is a keyword
    with zipfile.ZipFile(file, mode='r') as zips:
        zips.printdir()
        zips.extractall(directory)

.

>>> b'\x82\xb3'.decode('shiftjis')
'さ'
>>> b'\x82\xb3'.decode('shift-jis')
'さ'
>>> b'\x82\xb3'.decode('shift_jis')
'さ'
>>> '日本語'.encode('shiftjis')
b'\x93\xfa\x96{\x8c\xea'
>>> b'\x93\xfa\x96{\x8c\xea'.decode('shiftjis')
'日本語'

そしてファイルを読むとき:

with open('shiftjis.txt', 'r', encoding='shiftjis') as file:
    # do something with it

詳細: http://docs.python.org/3.3/library/io.html#io-base-classes

あまり正気でないバージョン:

with open('shiftjis.txt', 'rb') as file:
    string = file.read().decode('shift-jis')
于 2013-01-12T20:18:09.513 に答える