Php 使用特殊字符解码用户输入

Php 使用特殊字符解码用户输入,php,urldecode,Php,Urldecode,我有一个搜索脚本,用户在其中输入一些随GET发送的查询词。如果用户输入包含特殊字符,例如äpple,则url变为search.php?q=äpple,一切正常。但如果用户重新运行此urlsearch.php?q=äpple,浏览器地址字段将显示search.php?q=%E4pple,查询将失败。我应该如何解码该字符串URL解码不起作用。我想这正是它的目的,那么还有什么别的问题吗?或者我可以尝试其他哪些功能 更新 如果我在search.php?q=%E4pple上使用utf8äencode,它会

我有一个搜索脚本,用户在其中输入一些随GET发送的查询词。如果用户输入包含特殊字符,例如
äpple
,则url变为
search.php?q=äpple
,一切正常。但如果用户重新运行此url
search.php?q=äpple
,浏览器地址字段将显示
search.php?q=%E4pple
,查询将失败。我应该如何解码该字符串<代码>URL解码不起作用。我想这正是它的目的,那么还有什么别的问题吗?或者我可以尝试其他哪些功能

更新 如果我在
search.php?q=%E4pple
上使用utf8äencode,它会生成正确的
ä
字符,但是如果url中的字符串是由GET发送的,因此已经正确(且有效)
ä
了,utf8äencode就会把它弄糟


我想如果我在做某件事之前检查编码,我可以创造一个条件,但这不是一个更简单的方法吗???

通过检查$\u GET['q']的编码来解决它,并根据编码检查的结果适当地处理它。有关检查编码的函数,请参阅。

您永远不应该对其进行解码,因为php会为您进行解码。顺便说一句,你的页面编码是什么?好的,谢谢,utf-8和常规问题标记框会显示出来,但其他一切都可以。因此,您的意思是,如果用户搜索带有特殊字符查询的页面,该查询在浏览器URL中显示为原样,并且脚本正在工作,那么使用现在由浏览器编码的URL重新运行该页面(请参见问题),应该可以工作,因为php应该负责解码?浏览器总是将非ascii字符作为转义序列发送。因此,即使它是查询字符串中的
ä
,浏览器也会以
%nnnn
的形式发送它(您可以通过查看Web服务器访问日志进行检查)