Python urllib2.unquote()vs Javascript unescape()

时间:2016-02-12 17:58:13

标签: javascript python html flask

我有一个用python urllib2.quote()编码的字符串。相关字符串为"Z%C3%BCrich",由"Zürich"编码。但是,python处理这种方式与JavaScript的方式之间似乎存在差异。

在python中:

>>> print urllib2.unquote("Z%C3%BCrich")
Zürich

在JavaScript中:

> unescape("Z%C3%BCrich")
'Zürich'

它们采用相同的输入字符串,但产生非常不同的输出字符串。我做错了什么?

注意:这篇文章不是this post的副本,其中作者遇到了相反的问题。

2 个答案:

答案 0 :(得分:2)

发表我的评论作为答案。

您应该使用:

decodeURI("Z%C3%BCrich")

而不是JavaScript中的unescape("Z%C3%BCrich")

基本上,urllib2.quote()更像是JavaScript中的encodeURI()urllib2.unquote() decodeURI()unescape()更为敏感。

你应该总是在JavaScript中避免使用escape()unescape()函数,因为它们会给你带来奇怪的输出......就像你现在得到的那样。

答案 1 :(得分:1)

不推荐使用Javascript函数unescape(),您应该使用decodeURI()unescape()正在为您提供字符串的utf-8编码形式,而不是您想要的unicode。