Различные результаты между JS encodeURI () и PHP urldecode () - PullRequest
0 голосов
/ 07 ноября 2011

Это оригинальная строка

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

после js encodeURI ()

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

после PHP urldecode (), через $ _GET из вызова AJAX

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

после вставки в БД MySQL, заключенную в одинарные кавычки

Apple iPad 2 16GB Wifi   3G (AT

Как получить исходную строку точно в базу данных?

Ответы [ 4 ]

2 голосов
/ 07 ноября 2011

Поле вашей базы данных, скорее всего, недостаточно длинное, чтобы содержать полную строку.

Также вам следует закодировать строку с encodeURIComponent вместо encodeURI

2 голосов
/ 07 ноября 2011

Вы должны использовать encodeURIComponent вместо encodeURI.

Тогда строка будет Apple%20iPad%202%2016GB%20Wifi%20%2B%203G%20(AT%26T) после encodeURIComponent в JavaScript, который будет преобразован обратно в Apple iPad 2 16GB Wifi + 3G (AT&T) с urldecode в PHP.

0 голосов
/ 07 ноября 2011

rawurlencode в PHP сохранит «+». Не уверен насчет амперсанда, вы можете попробовать передать строку htmlentities.

0 голосов
/ 07 ноября 2011

Посмотрите Функция urlencode PHP.JS - она ​​работает точно так же, как urlencode PHP, поэтому urldecode будет работать отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...