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

13 投票
3 回答
34589 浏览
提问于 2025-04-15 15:30

我正在用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

如果可以的话,你应该尽量在所有工作中使用unicode。

你可能会觉得这个问题和答案很有用:

urllib2读取为Unicode

11

你刚刚从网络连接中读取了一些字节。如果你想把这些字节变成字符串,你需要进行解码:

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

(这里的utf-8可以换成你正在使用的任何编码方式)

然后,如果你想把它发送回去,就需要做相反的操作:

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

撰写回答