Javascript Python URL解码?
在javascript中,我执行以下操作:Javascript Python URL解码?,javascript,python,Javascript,Python,在javascript中,我执行以下操作: encodeURIComponent(comments) urllib2.unquote(comments) encodedURIComponents('ø') 在Python中,我执行以下操作: encodeURIComponent(comments) urllib2.unquote(comments) encodedURIComponents('ø') 出于某种原因,当我执行以下操作时: encodeURIComponent(comme
encodeURIComponent(comments)
urllib2.unquote(comments)
encodedURIComponents('ø')
在Python中,我执行以下操作:
encodeURIComponent(comments)
urllib2.unquote(comments)
encodedURIComponents('ø')
出于某种原因,当我执行以下操作时:
encodeURIComponent(comments)
urllib2.unquote(comments)
encodedURIComponents('ø')
我得到%C3%B8
,但当我解码时
urllib2.unquote('%C3%B8')
我得到的是ø
而不是原始字符ø
有什么好处
我所处的平台在客户端使用jQuery,在服务器端使用Python/Django。只需尝试对其进行解码:
urllib2.unquote('%C3%B8').decode('utf-8') # --> 'ø'
注意:实际上,如果我这样做,我会得到
u'\xf8'
。@user1886965:u'\xf8'
与u'ø'
是完全相同的字符串,因为ø
是第248个Unicode字符。@abarnet:那么我如何准备它以供网络浏览呢?@user1886965:我不确定你的意思。我相信Django可以让您在任何地方传递unicode
字符串,并进行与浏览器/客户机、数据库和日志文件等通信所需的任何转换,因此您无需做任何事情。我不确定为什么您需要在代码中使用行urllib.unquote(“%C3%B8”)
,因此如果有问题,而VisioN的答案无法解决,可以解释一下您的实际用例?您看到这一点的原因是一方使用UTF-8,另一方使用拉丁语-1。这就是为什么你不应该只使用默认的编码和交叉你的手指;如果您有任何非ASCII字符,请在内部将它们保存在unicode
字符串中,并在每个边界处对字符串进行适当的编码和解码。(Python3通过在出错时给您一个错误而不是mojibake使这变得更容易。)客户端的表单输入,我假设是UTF-8,而Python/django使用unicode?我使用的是Python2.x.Web表单可以指定每个方向上的字符集(在HTTP头或响应体中),默认为拉丁语-1。Python2有一种在str
和unicode
之间进行编码和解码的方法,如果只使用str
,则处理的是未指定含义的字节。(请参阅sys.getdefaultencoding()返回的内容。)因此,获取表单使用的字符集,并将字符串解码为unicode以便使用;发回时,将其编码为UTF-8并设置字符集(或者,最好让Django处理,以防浏览器出于某种原因发送Accept字符集
)。