【问题标题】:UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9'UnicodeEncodeError: 'ascii' 编解码器无法编码字符 u'\xe9'
【发布时间】:2015-04-13 16:38:35
【问题描述】:

我使用python从bing api获取json数据

    accountKeyEnc = base64.b64encode(accountKey + ':' + accountKey)
    headers = {'Authorization': 'Basic ' + accountKeyEnc}
    req = urllib2.Request(bingUrl, headers = headers)
    response = urllib2.urlopen(req)
    content = response.read()
    data = json.loads(content)
    for i in range(0,6):
            print data["d"]["results"][i]["Description"]

但我得到了错误

打印数据["d"]["results"][0]["Description"] UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 11: ordinal not in range(128)

【问题讨论】:

  • @Elizion 不好意思,没看懂,怎么用...
  • 什么是accountKey?
  • @Elizion bing 的帐号
  • 该错误表明 Python 不知道控制台输出使用什么编码 - 它假设最低公分母是 'ascii'。 ASCII 中不存在 很多 个字符,因此当您尝试打印它们时会出现错误。

标签: python unicode


【解决方案1】:

您的问题是您正在从 Bing API 读取 Unicode,然后未能将其显式转换为 ASCII。两者之间不存在良好的映射关系。使用u 为所有 const 字符串添加前缀,以便将它们视为 Unicode 字符串,看看是否有帮助。

【讨论】:

    猜你喜欢
    • 2015-10-21
    • 2013-04-21
    • 2018-07-07
    • 2011-04-05
    • 2014-12-22
    • 2016-09-10
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多