(禁止转载)
今天在尝试通过利用高德地图api做一个通过地名获得经纬度的小工具时遇到一个小问题
拼接好的http url大概是这样:
"http://restapi.amap.com/v3/geocode/geo?address=北京朝阳区阜通东大街6号&output=XML&key="
其中的中文编码处理问题纠结了好久,最后得到一种解决办法如下:
s = '北京朝阳区阜通东大街6号'
s = urllib.parse.quote(s)
url = "http://restapi.amap.com/v3/geocode/geo?address=%s&output=XML&key="%(s)
如此,再进行
req = urllib.request.urlopen(url)
即可。
至于进一步,这个问题为什么回发生呢?
其实很好理解,因为HTTP协议是ASCII编码的形式。所以所以中文必须通过以上方式要变成字母然后才能正确编码为字节流,然后发到网络中。。