2013-03-18 126 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