ли Ther любой встроенной функции в PHP для декодированияPOST Строка Декодирование в PHP
przysi% 25C4% 2599gam% 2520s% 25C5% 2582u% 25C5% 25BCy% 25C4% 2587
в
przysięgam służyć
?
ли Ther любой встроенной функции в PHP для декодированияPOST Строка Декодирование в PHP
przysi% 25C4% 2599gam% 2520s% 25C5% 2582u% 25C5% 25BCy% 25C4% 2587
в
przysięgam służyć
?
Ok, Гордон и Manos, вы оба правы (и оба не правы;)
Это просто нормальный 'urldecode', но применяется дважды
$a = "przysi%25C4%2599gam%2520s%25C5%2582u%25C5%25BCy%25C4%2587";
$b = urldecode(urldecode($a));
var_dump($b);
urldecode - декодирует URL-закодированные строки
Но я думаю, что не будет работать на мультибайтных строк. Смотрите комментарии на странице руководства для возможных путей их устранения, а также пользовательскими http://www.zend.com//code/codex.php?ozid=839&single=1
Отрицательный. Urldecode терпит неудачу в этом случае, поскольку он декодирует только символы% ##. – clops
Вы пробовали это:
function utf8_urldecode($str) {
$str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
return html_entity_decode($str,null,'UTF-8');;
}
Взятые из http://php.net/manual/en/function.urldecode.php
Edit: Ваша начальная строка перепутались. Вы дважды указали его? Причина utf8_urldecode (utf8_urldecode ($ encoded string)) дает правильный результат.
дал 'przysi% C4% 99gam% 20s% C5% 82u% C5% BCy% C4% 87' на моей машине. – Gordon
Я предполагаю, что у вас есть проблемы с urldecode и многобайтными символами. Urldecode может только декодировать 8-битные символы, а ваша строка содержит многобайтовые символы.
Проверьте, пожалуйста, urldecode manual page comments.
Вы уверены, что программа генерирование этих строк знает, что он делает? Если это строковая кодировка UTF-8, она должна читать «przysi% 25% C4% 25% 99gam ...», то есть оба байта кодируются по URL-адресу. – Boldewyn