此代码对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编码的字符?谢谢!
答案 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')