Python Tarfile提取路径不能包含特殊字符

Python Tarfile提取路径不能包含特殊字符,python,python-2.7,unicode,utf-8,tarfile,Python,Python 2.7,Unicode,Utf 8,Tarfile,我想将tarfile提取到它自己的路径,但是如果该文件的路径包含任何特殊字符(如ö) 若我并没有给出解压路径,它会将tarfile解压到我的项目目录中 这是我的密码: # -*- coding: utf-8 -*- import tarfile, os filepath = u"C:\\Users\\Ayse\\Desktop\\somefolderö\\tarfile.tar.gz" dirname = os.path.dirname(os.path.realpath(filepath))

我想将tarfile提取到它自己的路径,但是如果该文件的路径包含任何特殊字符(如ö)

若我并没有给出解压路径,它会将tarfile解压到我的项目目录中

这是我的密码:

# -*- coding: utf-8 -*-
import tarfile, os

filepath = u"C:\\Users\\Ayse\\Desktop\\somefolderö\\tarfile.tar.gz"
dirname = os.path.dirname(os.path.realpath(filepath))
dirname = dirname.encode('utf-8')

tar = tarfile.open(filepath, "r:gz")
tar.extractall(path=dirname) #error occurs on this line
tar.close()
我在tar.extractall(path=dirname)行中遇到此错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xf6 in position 4: ordinal not in range(128)
我尝试对path变量进行如下编码:

filepath = filepath.encode('utf-8')
编码后,代码可以正常工作。但是,tarfile将被提取到somefolderè文件夹。我想将其解压缩到somefolderö

长话短说,ö变成Ã


我在Windows 8.1上使用的是python 2.7。

看起来很像是用拉丁语1解码了字符串。当您打印dirname时,它是什么样子的?我打印了它,看起来很正确:“C:\Users\Ayse\Desktop\somefolderö”它被编码为拉丁语-1的某个地方,您的默认编码是什么?