我在Python编程,我通过urllib2
库从网页获取信息。问题是该页面可以为我提供非ASCII字符,例如'ñ'
,'á'
等。在urllib2
获取此字符的那一刻,它会引发异常,就像这样:
File "c:\Python25\lib\httplib.py", line 711, in send
self.sock.sendall(str)
File "<string>", line 1, in sendall:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 74: ordinal not in range(128)
我需要处理这些角色。我的意思是,我不想处理异常但是要继续该程序。有没有办法,例如(我不知道这是不是很愚蠢),使用另一个codec而不是ASCII?因为我必须使用这些字符,所以将它们插入数据库等等。
答案 0 :(得分:11)
您只需从套接字读取一组字节。如果你想要一个字符串,你必须解码它:
yourstring = receivedbytes.decode("utf-8")
(替换您用于utf-8
的任何编码)
然后你必须反过来把它发回去:
outbytes = yourstring.encode("utf-8")
答案 1 :(得分:6)
答案 2 :(得分:0)
您可能希望使用实际的解析库来查找此信息。例如,lxml
已经使用声明的字符集处理Unicode编码/解码。