Python 3,UnicodeEncodeError,解码设置为ignore

时间:2015-09-01 12:50:56

标签: python-3.x unicode encoding utf-8

此代码对solr索引进行http调用。

query_uri = prop.solr_base_uri + "?q=" + query + "&wt=json&indent=true"
with urllib.request.urlopen(query_uri) as response:
    data = response.read()
    #data is bytes
    data_str=data.decode('utf-8', 'ignore')

    print(data_str)

print语句抛出:

UnicodeEncodeError: 'charmap' codec can't encode character '\u2715' in position 149273: character maps to undefined

我认为解码('utf-8','忽略')应该忽略非utf-8字符并将其从结果中删除?我怎么在print语句中有一个UnicodeEncodeError?如何处理无法用Unicode编码的字符?谢谢!

1 个答案:

答案 0 :(得分:1)

错误是由print(以及任何file.write())没有设置字符映射并默认为ASCII引起的。

建议的方法是在您的环境中设置PYTHONIOENCODING=UTF-8或在打印前对每个字符串进行编码:

print(`data_str`.encode("utf-8")

对于文件写入,请在打开文件时设置文件的编码:

file = open("/temp/test.txt", "w", encoding="UTF-8")
file.write('\u2715')