0

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

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

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

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

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

所以我想我有2个问题。

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

更新:我在这里找到了一个检测 utf8 编码的函数,它允许我根据我得到的 url 版本来切换我处理 url 字符串的方式,所以现在我的主要问题已经解决。

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

4

1 回答 1

1

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

手册 - urlencode

手动 - urldecode

于 2013-02-13T14:34:50.547 回答