我有一个用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的副本,其中作者遇到了相反的问题。
答案 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。