2014-11-02 80 views
0

我熟悉urlencode,它編碼參數字典。我如何編碼一個字符串,如下面的URL安全的字符串?從字符串URLEncoding

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

urlencoded_str = ? 
+0

你是什麼意思的網址安全字符串?大多數瀏覽器,即非互聯網瀏覽器,都支持URL中的unicode :) – Wolph 2014-11-02 19:24:39

+0

那麼,括號和其他內容就不會被正確解釋。 – David542 2014-11-02 19:27:36

+0

可能的重複http://stackoverflow.com/questions/1695183/how-to-percent-encode-url-parameters-in-python – Kos 2014-11-02 19:29:17

回答

1

這裏有一個可能性(編碼線來告訴Python文件的編碼):

# 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 doesn't like unicode values: how about this workaround?

1

我不是100%確定你想達到什麼,但可能是這樣的:

#!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))