在一个页面上提交表单urlencodes获取值,不在另一页面上

时间:2013-02-13 14:28:51

标签: php url character-encoding

我正在尝试解决外来字符的问题并将其与数据库值匹配。

我设法从我想要的数据库查询中获得匹配,但现在我遇到了一个不同的问题,根本不知道为什么会发生这种情况。

在整个网站的所有页面上都有一个标题包含,其中包含一个用于搜索网站的输入字段。 <form action="/search.php" method="get"><input name="q" type="text" />etc...

我的问题查询字符串是grønhøj。当我将这个字符串输入到主页上的输入表单中时,我会被带到搜索页面,其中包含如下所示的URL: search.php?q = gr%F8nh%F8j 哪个不起作用时刻。 但是,如果我在搜索页面上的im重新加载时将相同的搜索查询重新输入到标题输入中,则页面重新加载除了url现在看起来像这样: search.php?q =grønhøj哪个有效。

如果生成的url始终保持不变,那么我就没有问题,但是因为它不一致我不知道如何为查询字符串的两个可能版本提供解决方案。

所以我猜我有两个问题。

1)为什么当使用完全相同的表单提交字符串时,网址不会保持不变? 2)我如何操纵url的两个版本(或停止产生不同url的不同页面),以便无论我得到哪个url版本,结果字符串都是一致的?

更新:我找到了一个检测utf8编码Here的函数,它允许我切换我处理url字符串的方式,具体取决于我获得的url版本,所以现在我的主要编码问题是固定的。

我仍然想了解为什么我从不同的页面获取2个不同的url变量,即使表单是整个站点的一致包含。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是始终使用urldecode()解码查询字符串,然后再次强制使用urlencode()。这样,如果初始查询字符串是url编码或解码的,无论如何,它将再次通过解码和编码过程,这将导致相同的最终查询字符串。

手动 - urlencode

手动 - urldecode