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

13 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)
Run Code Online (Sandbox Code Playgroud)

我需要处理这些角色.我的意思是,我不想处理异常但是要继续该程序.有没有办法,例如(我不知道这是不是愚蠢),使用另一个编解码器而不是ASCII?因为我必须处理这些字符,所以将它们插入数据库等.

dsi*_*ard 11

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

yourstring = receivedbytes.decode("utf-8") 
Run Code Online (Sandbox Code Playgroud)

(用你正在使用的任何编码代替utf-8)

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

outbytes = yourstring.encode("utf-8")
Run Code Online (Sandbox Code Playgroud)


Pau*_*lan 6

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

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

urllib2读取为Unicode