我知道非标准的%uxxxx方案,但这似乎不是明智的选择,因为该方案已被W3C拒绝。
一些有趣的例子:
心性。如果我在浏览器中输入以下内容:
http://www.google.com/search?q=♥
然后复制并粘贴它,我看到这个网址
http://www.google.com/search?q=%E2%99%A5
这似乎使Firefox(或Safari)正在执行此操作。
urllib.quote_plus(x.encode("latin-1"))
'%E2%99%A5'
这很有意义,除了不能用Latin-1编码的东西(例如三点字符)。
…
如果我输入网址
http://www.google.com/search?q=…
到我的浏览器,然后复制并粘贴,我得到
http://www.google.com/search?q=%E2%80%A6
背部。这似乎是这样做的结果
urllib.quote_plus(x.encode("utf-8"))
这很有意义,因为…无法使用Latin-1进行编码。
但是对于我来说,这还不清楚,浏览器如何知道是使用UTF-8还是Latin-1进行解码。
由于这似乎是模棱两可的:
In [67]: u"…".encode('utf-8').decode('latin-1')
Out[67]: u'\xc3\xa2\xc2\x80\xc2\xa6'
可以,所以我不知道浏览器如何确定是使用UTF-8还是Latin-1对其进行解码。
使用我需要处理的特殊字符正确的做法是什么?