如何在Python中处理Unicode(非ASCII)字符?

时间:2009-10-29 15:42:32

标签: python unicode character-encoding

我在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?因为我必须使用这些字符,所以将它们插入数据库等等。

3 个答案:

答案 0 :(得分:11)

您只需从套接字读取一组字节。如果你想要一个字符串,你必须解码它:

yourstring = receivedbytes.decode("utf-8") 

(替换您用于utf-8的任何编码)

然后你必须反过来把它发回去:

outbytes = yourstring.encode("utf-8")

答案 1 :(得分:6)

如果可以,您希望将unicode用于所有工作。

你可能会发现这个问题/答案很有用:

urllib2 read to Unicode

答案 2 :(得分:0)

您可能希望使用实际的解析库来查找此信息。例如,lxml已经使用声明的字符集处理Unicode编码/解码。