如何在Python中处理Unicode(非ASCII)字符?
我正在用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)
我需要处理这些字符。我的意思是,我不想处理错误,而是希望程序能够继续运行。有没有办法,比如(我不知道这样想是不是傻),使用其他的编码方式,而不是ASCII?因为我需要处理这些字符,把它们插入数据库等等。
3 个回答
0
你可能需要考虑使用一个真正的解析库来找到这些信息。比如说,lxml
这个库,已经处理了使用声明的字符集进行Unicode编码和解码的问题。
6
11
你刚刚从网络连接中读取了一些字节。如果你想把这些字节变成字符串,你需要进行解码:
yourstring = receivedbytes.decode("utf-8")
(这里的utf-8
可以换成你正在使用的任何编码方式)
然后,如果你想把它发送回去,就需要做相反的操作:
outbytes = yourstring.encode("utf-8")