JS encodeURI()和PHP urldecode()之间的不同结果

时间:2011-11-07 18:15:02

标签: php javascript database url

这是原始字符串

Apple iPad 2 16GB Wifi + 3G (AT&T)

在js encodeURI()

之后
Apple%20iPad%202%2016GB%20Wifi%20+%203G%20(AT&T)

在PHP urldecode()之后,通过来自AJAX调用的$ _GET

Apple iPad 2 16GB Wifi   3G (AT&T)

插入包含单引号

的MySQL DB后
Apple iPad 2 16GB Wifi   3G (AT

如何将原始字符串准确地输入数据库?

4 个答案:

答案 0 :(得分:2)

您应该使用encodeURIComponent而不是encodeURI。

然后在JavaScript中的encodeURIComponent之后字符串将是Apple%20iPad%202%2016GB%20Wifi%20%2B%203G%20(AT%26T),它将使用PHP中的urldecode转换回Apple iPad 2 16GB Wifi + 3G (AT&T)

答案 1 :(得分:2)

您的数据库字段很可能不够长,无法包含完整的字符串。

此外,您应该使用encodeURIComponent而不是encodeURI

对字符串进行编码

答案 2 :(得分:0)

查找PHP.JS's urlencode function - 它的行为方式与PHP的urlencode完全相同,因此urldecode可以完美运行。

答案 3 :(得分:0)

PHP中的rawurlencode将保留“+”。不确定&符号,你可以尝试将字符串传递给htmlentities。