关于python中使用urllib传递以及接收中文数据的问题
在使用python2版本下的urllib传递中文数据的时候出现了报错,ERROR:NON-ASCII 是因为url中包含了中文字符。把他转为utf-8编码传递即可
info = u"中文"
urllib.urlopen("http://1.2.3.4:8000?" + info.encode('utf-8'))
这样子传递过去的数据在接收的时候,会自动把编码成utf-8的中文再转成url编码
接收到的数据可能就是 %e4%b8%ad%e6%96%87 这是“中文”对应的url编码
接收数据后的处理方式是这样的:
import urllib
info = "%e4%b8%ad%e6%96%87"
print(urllib.unquote(info).decode("utf-8"))
把url编码通过unquote解码成传递过来的utf-8编码,再把utf-8编码解码成中文即可。
其实过程就是 中文数据(无法直接传递,报错:ERROR:NON-ASCII)-》utf-8-》url编码(这一步由url发送数据时自动完成)-》传递数据-》接收数据-》url解码-》utf-8解码-》中文数据
在python3中unquote方法可能是用urllib.parse.unquote()来代替,答主使用的是python2.
本文介绍如何在Python中使用urllib库正确处理中文数据的传输。针对Python 2版本,详细解释了从中文字符串到URL编码的过程,并提供了具体实例说明如何避免ERROR:NON-ASCII错误。同时对比了Python 3中对应方法的变化。
3034

被折叠的 条评论
为什么被折叠?



