我知道非标准的%uxxxx方案,但这似乎不是一个明智的选择,因为该方案已经被W3C拒绝了。
一些有趣的例子:
核心人物。如果我在浏览器中键入以下内容:
http://www.google.com/search?q=♥
然后复制并粘贴它,我看到这个URL
http://www.google.com/search?q=%E2%99%A5
这使得火狐(或Safari)看起来正在做这件事。
urllib.quote_plus(x.encode("latin-1"))
'%E2%99%A5'
这是有道理的,除了不能用拉丁语-1编码的东西,比如三重点字符。
…
如果我键入URL
http://www.google.com/search?q=…
到我的浏览器中,然后复制并粘贴,我会得到
http://www.google.com/search?q=%E2%80%A6
背。这似乎是因为
urllib.quote_plus(x.encode("utf-8"))
这是有道理的,因为…不能用拉丁语-1编码。
但是我不清楚浏览器是如何知道是用UTF-8还是拉丁文-1解码的。
由于这一点似乎很含糊:
In [67]: u"…".encode('utf-8').decode('latin-1')
Out[67]: u'\xc3\xa2\xc2\x80\xc2\xa6'
工作,所以我不知道浏览器如何判断是用UTF-8还是拉丁文-1解码。
如何正确处理我需要处理的特殊字符?
发布于 2009-06-19 22:22:23
发布于 2010-04-14 13:31:36
IRI不会取代URI,因为在某些上下文中只允许使用URI(实际上是ASCII) --包括HTTP。
相反,您可以指定一个IRI,当连接到网络上时,它将转换为URI。
发布于 2009-05-27 16:08:33
第一个问题是你的需求是什么?UTF-8编码是使用廉价编辑器创建的文本和支持多种语言之间的一个很好的折衷方案。关于浏览器识别编码的问题,响应(来自web服务器)应该告诉浏览器编码。尽管如此,大多数浏览器都会尝试猜测,因为在许多情况下,这要么是缺失的,要么是错误的。他们通过读取一定数量的结果流来猜测是否存在不适合默认编码的字符。目前所有浏览器(?我没有检查这一点,但它非常接近于真)使用utf-8作为默认值。
因此,除非您有令人信服的理由使用许多其他编码方案中的一种,否则请使用utf-8。
https://stackoverflow.com/questions/912811
复制相似问题