#php #javascript #database #url
#php #javascript #База данных #url
Вопрос:
Это исходная строка
Apple iPad 2 16GB Wifi 3G (ATamp;T)
после js encodeURI()
Apple iPad 2 16GB Wifi 3G (ATamp;T)
после PHP urldecode(), через $_GET из вызова AJAX
Apple iPad 2 16GB Wifi 3G (ATamp;T)
после вставки в базу данных MySQL, заключенную в одинарные кавычки
Apple iPad 2 16GB Wifi 3G (AT
Как мне получить исходную строку точно в базу данных?
Комментарии:
1. Если данные действительны непосредственно перед вставкой их в MySQL, проблема не может иметь ничего общего с кодировкой URL. Кроме того, как вы передаете аргумент GET, который вам нужно декодировать из PHP? Декодирование происходит автоматически.
Ответ №1:
Вы должны использовать encodeURIComponent вместо encodeURI.
Тогда строка будет Apple iPad 2 16GB Wifi + 3G (AT&T)
после encodeURIComponent в JavaScript, которая будет преобразована обратно в Apple iPad 2 16GB Wifi 3G (ATamp;T)
с urldecode в PHP.
Ответ №2:
Ваше поле базы данных, скорее всего, недостаточно длинное, чтобы содержать полную строку.
Также вы должны закодировать строку с encodeURIComponent
вместо encodeURI
Ответ №3:
Посмотрите PHP.Функция urlencode в JS — она ведет себя точно так же, как urlencode в PHP, поэтому urldecode будет работать идеально.
Ответ №4:
rawurlencode в PHP сохранит » «. Не уверен насчет амперсанда, вы могли бы попробовать передать строку в htmlentities.