5
URL编码Unicode字符的正确方法是什么?
我知道非标准的%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对其进行解码。 使用我需要处理的特殊字符正确的做法是什么?