Python请求说它';s UTF-8,那么为什么还有unicode字符呢?

Python请求说它';s UTF-8,那么为什么还有unicode字符呢?,unicode,python-requests,python-3.5,Unicode,Python Requests,Python 3.5,使用请求查询DarkSky API表示它返回UTF-8编码的文档,但字符串默认为ASCII,并有错误。若我显式地编码为UTF-8,那个么并没有错误,但字符串包含额外的字符和原始unicode。发生什么事?我已将py文件设置为在Sublime中使用UTF-8编码 # Fetch weather data from DarkSky, parse resulting JSON try: url = "https://api.darksky.net/forecast/" + API_KEY + "/"

使用请求查询DarkSky API表示它返回UTF-8编码的文档,但字符串默认为ASCII,并有错误。若我显式地编码为UTF-8,那个么并没有错误,但字符串包含额外的字符和原始unicode。发生什么事?我已将py文件设置为在Sublime中使用UTF-8编码

# Fetch weather data from DarkSky, parse resulting JSON
try:
url = "https://api.darksky.net/forecast/" + API_KEY + "/" + LAT + "," + LONG + "?exclude=[minutely,hourly,alerts,flags]&units=us"
response = requests.get(url)
data = response.json()
print(response.headers['content-type'])
print(response.encoding)
返回:
application/json;字符集=utf-8

d_summary = data['daily']['summary']
print("Daily Summary: ", d_summary.encode('utf-8'))
返回:
Daily Summary:b“本周无降水,周二气温升至82华氏度。”


前面的额外字符和用unicode文本引用的子字符串是怎么回事?

我看不出有任何问题。解码JSON不会导致错误,编码为UTF-8会产生预期的字节字符串literal repr
b'…'
。在字节字符串文字中,顶级位集字节应类似于
\xXX

字符串默认为ASCII,但有错误

你这是什么意思?请告诉我们实际的问题


我猜您正在尝试将非ASCII字符打印到Windows上的终端,并得到
UnicodeEncodeError
。如果是这样,那是因为Windows控制台已损坏,无法正确打印Unicode。在Python 3.6中解决了这个问题。

在mac上使用Sublime,但这很可能仍然是问题所在。在python 3.6.3中运行相同的代码。IDE可以很好地显示unicode文本和符号。首先,来自Sublime的错误:
print(“每日摘要:”,d_Summary)
产生了
UnicodeEncodeError:“ascii”编解码器无法对第69位的字符“\xb0”进行编码:序号不在范围内(128)
在IDE中打印相同的d_摘要会在一周内返回
无降水,周四气温降至64°F。
Ah!听起来像!非常感谢你!我对编码还是新手,为此我花了好几个小时。很高兴终于了解发生了什么以及如何修复它!我在使用mac和PyCharm IDE时也遇到过这个问题。尝试在pycharm终端中打印响应时出现了相同的错误。但在mac终端上运行时没有出现错误,显示正确。