2011-07-21 48 views
0

我有一个搜索脚本,用户输入一些使用GET发送的查询字。如果用户输入包含特殊字符,例如äpple url变成search.php?q=äpple,一切正常。但是,如果用户重新运行此URL search.php?q=äpple浏览器地址字段显示search.php?q=%E4pple并且查询失败。我应该如何解码该字符串。 urldecode没有工作。我认为这正是它的原因,所以还有其他的错误?或者我可以尝试哪些其他功能?使用特殊字符解码用户输入

更新,如果我用它产生的权利ä字符,但如果在URL字符串是通过GET发送,从而正确地(和工作)ä不已,函数utf8_encode打乱它的search.php?q=%E4pple函数utf8_encode 。

我想我可以做一个条件是我做了一些事情之前检查编码,但它不是一个更简单的方法?

+1

你不应该解码它,因为PHP为你做。顺便说一下,你的页面编码是什么? – zerkms

+0

好的谢谢,UTF-8和常规questionmarkbox显示,但其他一切正常。所以你的意思是说,如果一个用户使用一个在浏览器URL中显示为“现状”并且脚本正在工作的特殊查询进行搜索,那么使用该浏览器现在获得URL编码的相同URL重新运行该页面(请参阅问题)应该工作,因为PHP应该照顾解码? – Joseph

+0

浏览器**始终**发送非ASCII字符作为转义序列。因此,即使它在查询字符串中是“ä”,浏览器也会将其作为“%nnnn”发送(您可以通过查看Web服务器访问日志来查看它) – zerkms

回答