url解码,错误地解码数据

时间:2014-01-02 14:06:59

标签: php url-encoding

在我的项目中,我需要使用urlencode在GET变量中传递一个简单而简短的查询。

在执行URL解码后,某些字符似乎被修改,因此,不会返回任何数据库结果。

我想知道是否有人可以帮我确定原因以及如何解决这个问题?

非常感谢提前!

在URL编码之前:

((u.firstname LIKE '%Carol%') AND (u.lastname LIKE '%Enriquez%')

在URL Endode之后:

%28%28u.firstname+LIKE+%27%25Carol%25%27%29+AND+%28u.lastname+LIKE+%27%25Enriquez%25%27%29%29++

网址解码后:

((u.firstname LIKE 'Êrol%') AND (u.lastname LIKE '%Enriquez%')

1 个答案:

答案 0 :(得分:1)

如果您将其解码两次,就会发生这种情况。

观察:http://3v4l.org/uK5a6

var_dump(urldecode(urlencode("((u.firstname LIKE '%Carol%') AND (u.lastname LIKE '%Enriquez%')")));
var_dump(urldecode(urldecode(urlencode("((u.firstname LIKE '%Carol%') AND (u.lastname LIKE '%Enriquez%')"))));

string(64) "((u.firstname LIKE '%Carol%') AND (u.lastname LIKE '%Enriquez%')"
string(62) "((u.firstname LIKE '�rol%') AND (u.lastname LIKE '%Enriquez%')"

%是URL编码中使用的特殊字符。 %Ca可能是Ê