2013-03-18 122 views
0

我已編碼的URL這是什麼類型的URL編碼?

http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5 

http://blahblah.com/start/DEE-G6F-W4A-2N15 

什麼樣的編碼爲這個問題以及如何轉換我是在Python?

+0

我不明白什麼是在這個問題上怎麼回事,似乎「%E2%80%8B」只是隨機地插入到您的網址中。 - 這怎麼發生的?你試圖做些什麼來轉換它?你是如何從A-> B或從B-> A獲得的? – 2013-03-18 12:46:29

+0

在IE中複製電子郵件並將其粘貼到Chrome或FF時會發生這種情況。 : -/ – Sri 2013-03-18 12:47:27

+1

類似的問題和問題(%E2%80%8B)這裏http://stackoverflow.com/questions/6315422/encoding-issue-asp-net – 2013-03-18 12:47:48

回答

3

編輯:(由於與@interjay會話):

%E2%80%8B表示ZERO WIDTH SPACE。那些可能不應該在那裏。使用urllib.unquote

In [135]: 'http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5'.replace('%E2%80%8B', '') 
Out[135]: 'http://blahblah.com/start/DEE-G6F-W4A-2N15' 

在一般情況下,引用網址,可以不帶引號的:你可以用str.replace刪除它們

In [6]: import urllib 

In [7]: print(urllib.unquote('http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5')) 
http://blahblah.com/s​tart/DEE-G​6F-W4A-2N1​5 

這裏是你如何能告訴%E2%80%8B代表ZERO WIDTH SPACE

In [18]: x = urllib.unquote('%E2%80%8B') 

In [19]: y = x.decode('utf-8') 

In [20]: import unicodedata as UD 

In [21]: [UD.name(c) for c in y] 
Out[21]: ['ZERO WIDTH SPACE'] 

注意,unqoted URL包括零個寬空格:

In [4]: urllib.unquote('http://blahblah.com/s%E2%80%8Btart/DEE-G%E2%80%8B6F-W4A-2N1%E2%80%8B5') 
Out[4]: 'http://blahblah.com/s\xe2\x80\x8btart/DEE-G\xe2\x80\x8b6F-W4A-2N1\xe2\x80\x8b5' 

這似乎是一個奇怪的事情放在一個網址...

+1

這將離開字符串中的零寬度空間(儘管在使用'print'時你看不到它,這可能不是正確的解決方案,因爲URL幾乎肯定不應該在單詞中間有零寬度空間。 – interjay 2013-03-18 12:52:34

+0

給定URL,這是它在Python中如何被引用。給定的URL是否正確不是OP的問題,也不是我們可以回答的問題,因爲這個URL顯然是組成的。 – unutbu 2013-03-18 13:39:41

+0

回答問題的一部分是弄清楚OP實際需要什麼,因爲他們可能不完全知道自己。在這種情況下,取消引用URL顯然不是。 – interjay 2013-03-18 14:28:01