“UnicodeEncodeError:' ascii'编解码器不能在Python3中对字符进行编码

时间:2016-08-08 17:52:12

标签: python json encoding utf-8

我从API(使用Python 3.5)获取JSON,当我试图通过response.text,json.loads(... )或response.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}]

我不知道为什么会出现编码问题以及为什么" ascii"当请求检测到UTF-8编码时使用(即使手动将其设置为UTF-8也不会改变任何内容)。

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

1 个答案:

答案 0 :(得分:0)

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

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

根据Visual Studio的控制台,您可以使用:

PYTHONIOENCODING=utf-8

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

PYTHONIOENCODING=windows-1252