python 'ascii' 编码无法编码字符
我在尝试显示RSS源的内容时总是遇到错误。我试过的源有Teksyndicate的“厨房水槽”源(utf-8编码)和AMD的新闻源(没有设置编码),这两个源我都下载到了我的电脑上,这样每次运行代码时就不需要去访问他们的服务器。
Teksyndicate的源给我报了一个错误:'UnicodeEncodeError: 'charmap' codec can't encode character u'\xc2' in position 183: character maps to '
而AMD的源则报了另一个错误:'UnicodeEncodeError: 'charmap' codec can't encode character u'\u2122' in position 349: character maps to '
引发错误的代码是:
import xml.etree.ElementTree as ET
xmlTree = ET.parse('amd.rss')
xmlRoot = xmlTree.getroot()
# <tag attrib>text<child/>...</tag>tail
# above pulled from Element tree lib file
for i in list(xmlTree.iter()):
if i.text != None:
print i.tag + ': ' + i.text
else:
print i.tag + ': None'
print '\n\nxmlRoot'
print xmlRoot.tag
print xmlRoot.attrib
print xmlRoot.text
print xmlRoot.tail
另外,我想补充一下,我正在尝试制作一个RSS源阅读器。我知道市面上有很多现成的,但我想自己动手做一个试试。这就是我遇到这个错误的原因,而我完全不知道该怎么解决。目前我只是随便玩玩,想学习一下ElementTree。
1 个回答
0
打印语句会把所有东西都当成字符串来处理。你的问题其实和这个问题很相似。我是通过谷歌找到的,你也可以试试!
问题在于,如果你不指定编码,默认会使用ASCII编码,而很多Unicode字符是无法转换成ASCII的(因为ASCII只有128个字符)。之前那个问题的回答应该能告诉你该怎么修正。