python 3中的字符编码转换

kRe*_*oSo 3 python character-encoding python-3.x

在 python 2.x 中,我使用了

"shift-jis".decode('shift-jis').encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

但 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)
Run Code Online (Sandbox Code Playgroud)

该函数的等效 python3 代码是什么?

小智 5

对于您更新的问题:

\n\n
def unzip(file, directory): # dir is a keyword\n    with zipfile.ZipFile(file, mode=\'r\') as zips:\n        zips.printdir()\n        zips.extractall(directory)\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
>>> b\'\\x82\\xb3\'.decode(\'shiftjis\')\n\'\xe3\x81\x95\'\n>>> b\'\\x82\\xb3\'.decode(\'shift-jis\')\n\'\xe3\x81\x95\'\n>>> b\'\\x82\\xb3\'.decode(\'shift_jis\')\n\'\xe3\x81\x95\'\n>>> \'\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\'.encode(\'shiftjis\')\nb\'\\x93\\xfa\\x96{\\x8c\\xea\'\n>>> b\'\\x93\\xfa\\x96{\\x8c\\xea\'.decode(\'shiftjis\')\n\'\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

以及读取文件时:

\n\n
with open(\'shiftjis.txt\', \'r\', encoding=\'shiftjis\') as file:\n    # do something with it\n
Run Code Online (Sandbox Code Playgroud)\n\n

了解更多:http://docs.python.org/3.3/library/io.html#io-base-classes

\n\n

一个不太理智的版本:

\n\n
with open(\'shiftjis.txt\', \'rb\') as file:\n    string = file.read().decode(\'shift-jis\')\n
Run Code Online (Sandbox Code Playgroud)\n