我正在尝试使用 Python 和 BeautifulSoup 解析此文档:
http://en.wikipedia.org/w/api.php?format=xml&action=opensearch&search=rage_against_the_machine
第七项作为这个文本标签:
Rage Against the Machine 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)
谢谢