Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Python URL解码?_Javascript_Python - Fatal编程技术网

Javascript Python URL解码?

Javascript Python URL解码?,javascript,python,Javascript,Python,在javascript中,我执行以下操作: encodeURIComponent(comments) urllib2.unquote(comments) encodedURIComponents('ø') 在Python中,我执行以下操作: encodeURIComponent(comments) urllib2.unquote(comments) encodedURIComponents('ø') 出于某种原因,当我执行以下操作时: encodeURIComponent(comme

在javascript中,我执行以下操作:

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字符集
)。