提问者:小点点

Python3中的“UnicodeEncodeError:'ascii'编解码器无法对字符进行编码”


我从一个API获取JSON请求(使用Python3.5),当我试图打印(或使用)JSON,无论是响应. text,json.load(…)或响应.json(),我得到一个UnicodeEncodeError。

print(response.text)
UnicodeEncodeError: 'ascii' codec can't encode character '\xc5' in position 676: ordinal not in range(128)

JSON包含一组带有国家名称的字典,其中一些包含特殊字符,例如:(例如,二进制数组中只有一个字典)

b'[{\n "name" : "\xc3\x85land Islands"\n}]

我不知道为什么会有编码问题,也不知道为什么当请求检测到UTF-8编码时使用ascii(即使手动将其设置为UTF-8也不会改变任何事情)。

Edit2:问题是Microsoft Visual Studio Code 1.4。它无法打印字符。


共1个答案

匿名用户

如果您的代码在VS中运行,那么听起来Python无法计算内置控制台的编码,因此默认为ASCII。如果您尝试打印任何非ASCII,那么Python会抛出错误,而不是打印不会显示的文本。

您可以使用PYTHONIOENCODING环境变量强制Python编码。在脚本的运行配置中设置它。

根据Visual Studio的控制台,您可能会逃脱:

PYTHONIOENCODING=utf-8

或者您可能必须使用典型的8位字符集,例如:

PYTHONIOENCODING=windows-1252