PHP - urldecode. Разное поведение с Википедией - PullRequest
0 голосов
/ 10 июля 2011

все.У меня другое поведение функции urldecode () в PHP 5.2.x .Особенно вы сможете увидеть это на примере Википедии.

Во-первых, моя страница, где у меня есть результаты этой функции, имеет мета:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

Чем я использую функцию:

$url = urldecode($url);
echo $url;

Вот пример переменной $ url:

Что не так?Зачем?Я пытался использовать все функции из function.urldecode.php на сайте PHP, но это не дало мне никаких успешных результатов

Вот быстрый пример кода для тестирования в PHP:

<?php
$url = array();

$url[] = "http://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B5%D1%81%D1%82";
$url[] = "http://ru.wikipedia.org/wiki/%CC%EE%EB%EE%E4%E5%F7%ED%EE";

foreach ($url as $value) :
    echo urldecode($value) . "<br/>";
endforeach;
?>

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 10 июля 2011

Не знаю, где вы взяли этот URL, но правильный utf-8 для "Молодечно":

$url = 'http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BB%D0%BE%D0%B4%D0%B5%D1%87%D0%BD%D0%BE';

echo urldecode($url);

Ваш кодируется cp1251

1 голос
/ 10 июля 2011

Как сказано в zerkms, следующий URL закодирован в cp1251.Чтобы преобразовать его в UTF-8, просто используйте это:

 $url = 'http://ru.wikipedia.org/wiki/%CC%EE%EB%EE%E4%E5%F7%ED%EE';
 echo iconv("Windows-1251","UTF-8",urldecode($url));

 //output:  Молодечно
...