Використовуючи encodeURIComponent()
в JS та PHP, ви повинні отримати правильні значення.
Примітка: При зверненні $_GET
, $_POST
або $_REQUEST
в PHP, ви запитуєте значення , які вже декодовані.
Приклад:
У вашому JS:
// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B
На вашому сервері:
echo $_GET['string']; // "+"
Лише необроблений запит HTTP містить закодовані URL-адреси.
Для запиту GET ви можете отримати це з URI. $_SERVER['REQUEST_URI']
або $_SERVER['QUERY_STRING']
. Для POST, кодованого адресою,file_get_contents('php://stdin')
Примітка:
decode()
працює лише для однобайтових кодованих символів. Він не працюватиме для повного ряду UTF-8.
наприклад:
text = "\u0100"; // Ā
// incorrect
escape(text); // %u0100
// correct
encodeURIComponent(text); // "%C4%80"
Примітка: "%C4%80"
еквівалентно:escape('\xc4\x80')
Яка послідовність байтів ( \xc4\x80
), яка представлена Ā
в UTF-8. Отже, якщо ви використовуєте encodeURIComponent()
вашу сторону сервера, ви повинні знати, що вона отримує UTF-8. Інакше PHP перекриє кодування.