Python3 unicode编码错误

Python3 unicode编码错误,python,unicode,python-3.x,glob,Python,Unicode,Python 3.x,Glob,我使用glob.glob从目录输入获取文件列表。当试图打开上述文件时,Python用以下错误回击我: UnicodeEncodeError:“charmap”编解码器无法对位置18中的字符“\xf8”进行编码:字符映射到 通过首先定义字符串变量,我可以做到: filePath = r"C:\Users\Jørgen\Tables\\" 有没有办法获得变量的“r”编码 编辑: 还有很多代码,但是这个问题会停止这个过程。独立于使用原始字符串文字还是普通字符串文字,Python解释器必须知道源代码编

我使用glob.glob从目录输入获取文件列表。当试图打开上述文件时,Python用以下错误回击我:

UnicodeEncodeError:“charmap”编解码器无法对位置18中的字符“\xf8”进行编码:字符映射到

通过首先定义字符串变量,我可以做到:

filePath = r"C:\Users\Jørgen\Tables\\"
有没有办法获得变量的“r”编码

编辑:


还有很多代码,但是这个问题会停止这个过程。

独立于使用原始字符串文字还是普通字符串文字,Python解释器必须知道源代码编码。似乎您使用了一些8位编码,而不是UTF-8。因此,您必须添加以下行

# -*- coding: cp1252 -*-
在文件的开头(或使用用于源文件的其他编码)。它不需要是第一行,但通常是第一行或第二行(对于Windows上使用的脚本,第一行应该包含
#!python3

无论如何,通常最好不要在文件/目录名中使用非ASCII字符

还可以在路径中使用普通斜杠(与基于Unix的系统中的方式相同)。另外,请查看何时需要组合路径

已更新

问题可能不是你在哪里搜索它。我的猜测是,只有当您希望通过
print
显示结果列表时,错误才会出现。这通常是因为控制台默认使用无法显示字符的非unicode编码。在
cmd
窗口中尝试不带参数的
chcp
命令

您可以在
main()
函数中修改打印命令,将字符串表示形式转换为始终可以显示的ASCII表示形式:

print(ascii(fileList))

Python解释器必须知道源代码编码,这与使用原始字符串文字还是普通字符串文字无关。似乎您使用了一些8位编码,而不是UTF-8。因此,您必须添加以下行

# -*- coding: cp1252 -*-
在文件的开头(或使用用于源文件的其他编码)。它不需要是第一行,但通常是第一行或第二行(对于Windows上使用的脚本,第一行应该包含
#!python3

无论如何,通常最好不要在文件/目录名中使用非ASCII字符

还可以在路径中使用普通斜杠(与基于Unix的系统中的方式相同)。另外,请查看何时需要组合路径

已更新

问题可能不是你在哪里搜索它。我的猜测是,只有当您希望通过
print
显示结果列表时,错误才会出现。这通常是因为控制台默认使用无法显示字符的非unicode编码。在
cmd
窗口中尝试不带参数的
chcp
命令

您可以在
main()
函数中修改打印命令,将字符串表示形式转换为始终可以显示的ASCII表示形式:

print(ascii(fileList))
另请参阅:

您可以告诉Python显式地将字符串作为unicode处理——但您必须从第一个字符串开始维护它

在这种情况下,将u'somepath'传递给os.walk。

请参见:

您可以告诉Python显式地将字符串作为unicode处理——但您必须从第一个字符串开始维护它


在这种情况下,向os.walk传递u'somepath。

没有
r
编码。您正在定义一个原始字符串文字,从而避免了使用太多反斜杠。您的文件编码处理了
ø
,因此您定义了一个unicode值。
“C:\\Users\\Jørgen\\Tables\\”
也可以使用。您的编辑器将其保存为UTF-8,这是Python在解释源代码时使用的默认编码。请向我们显示产生该错误的代码。没有
r
编码。您正在定义一个原始字符串文字,从而避免了使用太多反斜杠。您的文件编码处理了
ø
,因此您定义了一个unicode值。
“C:\\Users\\Jørgen\\Tables\\”
也可以使用。您的编辑器将其保存为UTF-8,这是Python在解释源代码时使用的默认编码。请向我们展示产生该错误的代码。我希望能够使用非ASCII字符,如
æ
ø
å
。目标是输入文件夹路径,并操作该文件夹中特定类型的每个文件。对于其他用户,我不能保证路径不会包含任何“非法”字符。我确实有
#-*-编码:utf-8-*-
在顶部,但这和你的“编码”建议都不起作用。好的。如果它不在你的控制之下,那就好了。但是你必须保证没有非法字符。如果系统支持Unicode路径,字母也可以,即使是Unicode字母。您使用的是Python 3还是Python 2?好的。
#-*-编码:-*-行帮助删除错误?当我在代码中定义
di=r“C:\Users\Jørgen\Tables\\”
时,
代码行起作用。但是,当我尝试将文件夹路径作为输入时,一切又会出错。我希望能够使用非ASCII字符,如
æ
ø
å
。目标是输入文件夹路径,并操作该文件夹中特定类型的每个文件。对于其他用户,我不能保证路径不会包含任何“非法”字符。我确实有
#-*-编码:utf-8-*-
在顶部,但这和你的“编码”建议都不起作用。好的。如果它不在你的控制之下,那就好了。但是你必须保证没有非法字符。如果系统支持Unicode路径,字母也可以,即使是Unicode字母。您使用的是Python 3还是Python 2?好的。
#-*-编码:-*-行帮助到