我使用python接收不同编码的Web响应,我的预期输出应该与网页上给出的相同
Ex:MarcBarbé
解析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>
我真的无法找到相同的原因。是否有任何替代方法可用于从网络获取相同的编码内容。
答案 0 :(得分:1)
Codepage 437(正在编码)不知道ø
字符,因此无法对输出进行编码。错误消息确实说明了这一切。
所以问题是:为什么要尝试将字符串编码为DOS控制台窗口使用的代码页?
答案 1 :(得分:1)
您已成功从网络获取unicode
个对象。你不应该做unicode.join(u'\n',map(unicode,item))
之类的事情。当您尝试输出unicode时会发生此问题。
您正在Windows“命令提示符”窗口中运行脚本。脚本正在打印到控制台。控制台编码为cp437
。这是一种非常有限的(8位)编码。它无法处理Møller
中的第二个字符,以及一大堆其他字符
补救措施:在IDLE(随Python提供)或其他IDE中运行脚本。
或者,如果您要打印到控制台仅用于调试目的,而不是print foo
使用print repr(foo)