
转译中文是‘激战2’,在python里如何将字符串‘激战2’转换为‘%E6%BF%80%E6%88%982’。
1 clijiac 2015-07-12 19:05:42 +08:00 base64吧 |
3 BraveRBT 2015-07-12 19:06:27 +08:00 |
4 BraveRBT 2015-07-12 19:08:42 +08:00 举个栗子 urllib.urlencode({"逆战2":"hehe "}) |
5 dangge 2015-07-12 19:09:20 +08:00 |
6 lerry 2015-07-12 19:10:17 +08:00 import urllib print urllib.unquote("%E6%BF%80%E6%88%982") >>激战2 |
8 lerry 2015-07-12 19:11:25 +08:00 print urllib.quote("激战2") >>%E6%BF%80%E6%88%982 |
10 blank4me 2015-07-12 19:32:47 +08:00 貌似就叫做url encode?本质而言是UTF-8。“激”的UTF-8是E6 BF 80。 |
11 ciba1990 OP django报错 KeyError at /search/ u'\u6fc0' 代码: url='http://tieba.baidu.com/f?ie=utf-8&kw=%s&fr=search' % quote(“激战2”) html=urllib2.urlopen(url).read() soup = BeautifulSoup(html) 如果url=’http://tieba.baidu.com/f?ie=utf-8&kw=%E6%BF%80%E6%88%982&fr=search‘却又可以。 @lerry @dangge @BraveRBT |
12 anthonyeef 2015-07-12 20:21:23 +08:00 @dangge 你的笔记打不开 |
13 ciba1990 OP 刚才代码打错了 url='http://tieba.baidu.com/f?ie=utf-8&kw=%s&fr=search' % quote(request.GET.get('q','')) html=urllib2.urlopen(url).read() soup = BeautifulSoup(html) 上面打的那个代码是可以运行的。request.GET.GET('q','')获取的就是"激战2“,不知道哪里的问题。 |
14 skywatcher 2015-07-12 20:54:33 +08:00 @ciba1990 不应该啊,百度的gbk和utf8编码都可以访问啊,“激战2”的gbk的quote是`%BC%A4%D5%BD2`, utf8的quote是`%E6%BF%80%E6%88%982` http://tieba.baidu.com/f?ie=utf-8&kw=%BC%A4%D5%BD2&fr=search http://tieba.baidu.com/f?ie=utf-8&kw=%E6%BF%80%E6%88%982&fr=search 这两个都是能访问的,你把urlprint出来看看哪里不一样 |
15 ciba1990 OP @skywatcher 就是URL报错, /home/mysite/search/views.py in index url='http://tieba.baidu.com/f?ie=utf-8&kw=%s&fr=search' % quote(request.GET.get('q','')) ... Local vars /usr/lib/python2.7/urllib.py in quote return ''.join(map(quoter, s)) ... Local vars |
16 ciba1990 OP @skywatcher 英文没问题 中文报错 |
17 dangge 2015-07-12 21:46:46 +08:00 @anthonyeef 吓到了 V2过来的流量太大了... 本来是放在一个小服务商的机器上,现在迁移了一下... |
19 ciba1990 OP @skywatcher 解决了 3Q |
23 jsq2627 2015-07-13 12:13:42 +08:00 @dangge 你把 Unicode,UTF-8,URL编码独立开来写有一定误导性 Unicode只规定了字符到码点的对应,没有规定存储形式。UTF-8/UTF-16/UTF-32是它的几种存储形式。URL Encoding 没有规定用什么编码,它只是把二进制用字符串表现出来了。笔记里最后提到的“unicode编码”实际是UTF-16的字符串表现。 |
24 caomaocao 2015-07-13 14:20:07 +08:00 utf-8或者Gbk吧 用url.unqote把%装成/x先出来先 |
26 xujiaze 2015-07-13 21:25:15 +08:00 四楼 url加密。。其实没啥用,我个人的站都是先encode关键词,好像能防SQL注入。翻译还是很麻烦的,其实你自己进入http://www.baidu.com/?s=转义字符 就会告诉你是什么了。 |