我从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。它无法打印字符。
答案 0 :(得分:0)
如果您的代码在VS中运行,那么听起来Python无法计算出内置控制台的编码,因此默认为ASCII。如果您尝试打印任何非ASCII,则Python会抛出错误,而不是打印不会显示的文本。
您可以使用PYTHONIOENCODING
环境变量强制进行Python编码。将其设置在脚本的运行配置中。
根据Visual Studio的控制台,您可以使用:
PYTHONIOENCODING=utf-8
或者您可能必须使用典型的8位字符集,如:
PYTHONIOENCODING=windows-1252