0

我正在使用 python 接收不同编码的网络响应,我的预期输出应该与网页上给出的相同

例如:马克·巴贝

解析 html 响应后,最后一个字符应保持不变。

目前我正在为此使用以下代码

unicode.join(u'\n',map(unicode,item))

在某些情况下,如果没有给出特殊编码,则会引发以下错误:例如:Markus Rygaard、Alberte Blichfeldt、Flemming Quist、Møller

Traceback (most recent call last):
  File "BFICrawl.py", line 20, in <module>
    print attrName + " : " + attrValue
  File "C:\Python27\LIB\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\xf8' in position 6
0: character maps to <undefined>

我真的找不到相同的原因。是否有任何替代方法可用于从 web.xml 获取相同的编码内容。

4

2 回答 2

1

代码页 437(正在被编码)不知道该ø字符,因此您的字符串无法被编码为输出。错误消息确实说明了所有这些。

所以问题是:你为什么要把字符串编码成 DOS 控制台窗口使用的代码页?

于 2012-04-27T21:33:48.547 回答
1

您已成功unicode从 Web 获取对象。你不应该需要做类似的事情unicode.join(u'\n',map(unicode,item))。当您尝试输出 unicode 时,问题正在发生。

您正在 Windows“命令提示符”窗口中运行脚本。该脚本正在打印到控制台。控制台编码是cp437. 这是一个非常有限的(8 位)编码。它无法处理 中的第二个字符Møller,以及大量其他字符

补救措施:在 IDLE(随 Python 提供)或其他 IDE 中运行脚本。

或者,如果您仅出于调试目的打印到控制台,而不是print foo使用print repr(foo)

于 2012-04-27T22:21:12.397 回答