python 'ascii' 编码无法编码字符

2 投票
1 回答
5366 浏览
提问于 2025-04-18 16:35

我在尝试显示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个字符)。之前那个问题的回答应该能告诉你该怎么修正。

撰写回答