Використовуючи 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 перекриє кодування.