问题描述
我目前正在做一些我需要从网站上提取.xml
并与之合作的事情。
一切正常,但是如果我尝试打印.xml
(或解析后的文本)并且.xml
中有一些字符无法编码,我会收到错误消息: / p>
return codecs.charmap_encode(input,self.errors,encoding_table)
[0]UnicodeEncodeError: 'charmap' codec can't encode character '\u2665' in position 1161: character maps to <undefined>
现在,我想找到这些字符并将其替换为“?”例如。
我该怎么做?
解决方法
如果您编写了生成该错误的代码,则通常在任何情况下都可以更轻松地为您提供帮助,您可以在utf8
中对字符串进行编码,然后进行解码:
data = '\u2665'
data = data.encode('utf8')
print(data) # b'\xe2\x99\xa5'
data_d = data.decode('utf8')
print(data_d) # ♥
此外,您可以在脚本的开头添加以下行:
# -*- coding: utf-8 -*-
,然后使用以下命令验证stdout.encoding
:
import sys
print(sys.stdout.encoding)