2017-02-15 66 views
0

我有一個程序抓取存儲在本地文件系統中的變量並將它們存儲在一個變量中。然後我嘗試對它們進行URL編碼,以便在Web API調用中使用。然而,我注意到,我的幾個電話都出現了錯誤,經過研究發現編碼不能按預期工作。爲什麼這兩個字符串操作產生不同的輸出?

該字符串編碼產生正確的結果。

newstring = urllib.parse.quote(u"Müller".encode('utf8')) 
print(newstring) 

輸出

M%C3%83%C2%BCller 

但是,此代碼不會產生正確的輸出

string2 = "Müller" 
newstring2 = urllib.parse.quote(string2.encode('utf8')) 
print(string2) 

輸出

Müller 

任何想法的差異是在這裏,我怎麼什麼可以修復它,使秒ond位代碼產生準確的結果?

+1

我以爲默認情況下Python 3中的所有字符串都是unicode。你還需要'u'Müller''的'u嗎? –

+1

當你需要簡化'2.x' /'3.x'代碼庫的維護時,它們是@RocketHazmat'u'''通常用於(在'3.3'中加入)。如果OP不是針對這一點的話,那麼'u''是多餘的。 –

回答

1

也許你打算在第二個例子中寫print(newstring2)?這將產生與第一個例子中相同的輸出。

In [1]: string2 = "Müller" 
In [2]: print(urllib.parse.quote(string2.encode('utf8'))) 
M%C3%BCller 
+0

你是對的。謝謝! –

相關問題