关于python:来自字符串的URLEncoding

URLEncoding from a string

我熟悉urlencode,它编码参数字典。如何将如下字符串编码为URL安全字符串?

1
2
3
4
5
6
s =     'http://google.com/search?q='
     +  'パイレーツ?オブ?カリビアン/呪われた海賊たち(日本語吹替版)'
     + ' '
     + 'site:imdb.com/title'

urlencoded_str = ?


我不完全确定你想要达到什么目标,但可能是这样:

1
2
3
4
5
6
7
8
#!coding: utf-8
from urllib import quote

s = 'http://google.com/search?q={}site:wikipedia.org'

escape_me = 'パイレーツ?オブ?カリビアン/呪われた海賊たち(日本語吹替版) '

urlencoded_str = s.format(quote(escape_me))

这里有一种可能性(编码行是告诉python文件的编码):

1
2
3
4
5
6
7
8
9
10
11
# vim: encoding=utf-8

import urllib

base_url = 'http://google.com/search'
params = dict(
    q=('パイレーツ?オブ?カリビアン/呪われた海賊たち(日本語吹替版)'
       + ' site:imdb.com/title'))

query = urllib.urlencode(params)
print base_url + '?' + query

要获得更好的解决方案,请看这个问题:urllib.urlencode不喜欢unicode值:这个解决方案如何?