繁体   English   中英

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

[英]How to handle Unicode (non-ASCII) characters in Python?

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

您只需从套接字读取一组字节。 如果您想要一个字符串,则必须对其进行解码:

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

(替换为utf-8使用的任何编码)

然后,您必须执行相反的操作以将其发送回:

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

如果可以的话,您想对所有工作使用unicode。

您可能会发现此问题/答案很有用:

urllib2读为Unicode

您可能想研究使用实际的解析库来查找此信息。 例如, lxml已经使用声明的字符集解决了Unicode编码/解码问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM