【发布时间】:2012-11-06 03:31:22
【问题描述】:
我正在尝试使用 Python 和 BeautifulSoup 解析此文档:
http://en.wikipedia.org/w/api.php?format=xml&action=opensearch&search=rage_against_the_machine
第七个Item作为这个Text标签:
对机器的愤怒 1994–1995 游览
当我尝试打印文本“Rage Against the Machine's 1994–1995 Tour”时,python 给了我这个:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 31: ordinal not in range(128)
我可以通过简单地将 u'\u2013' 替换为 '-' 来解决它,如下所示:
itemText = itemText.replace(u'\u2013', '-')
但是,我没有编码的每个字符呢?我不想忽略它们,也不想列出所有可能的查找和替换。
当然,必须存在一个库来尝试最好从常见的已知编码列表中检测编码(但很可能会出错)。
someText = getTextWithUnknownEncoding(someLocation);
bestAsciiAttemptText = someLibrary.tryYourBestToConvertToAscii(someText)
谢谢
【问题讨论】:
-
你在 Windows 上吗?
-
如何打印文本?到终端,到文件?你在任何地方连接 (str1 + str2) 吗?
-
我在 Windows 7 上,我正在直接打印到终端
-
该链接建议使用不起作用的 .encode('utf-8') 。它给了我同样的错误。
标签: python unicode encoding ascii wikipedia-api