我已编码的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?
我已编码的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?
编辑:(由于与@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/start/DEE-G6F-W4A-2N15
这里是你如何能告诉%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'
这似乎是一个奇怪的事情放在一个网址...
我不明白什么是在这个问题上怎么回事,似乎“%E2%80%8B”只是随机地插入到您的网址中。 - 这怎么发生的?你试图做些什么来转换它?你是如何从A-> B或从B-> A获得的? – 2013-03-18 12:46:29
在IE中复制电子邮件并将其粘贴到Chrome或FF时会发生这种情况。 : -/ – Sri 2013-03-18 12:47:27
类似的问题和问题(%E2%80%8B)这里http://stackoverflow.com/questions/6315422/encoding-issue-asp-net – 2013-03-18 12:47:48