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