PHP-url解码.维基百科的不同行为


PHP - urldecode. Different behavior with Wikipedia

all。我在PHP 5.2.x中有不同的函数urldecode((行为。特别是你可以在维基百科中看到它作为一个很好的例子。

首先,我有该函数结果的页面有meta:

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

我正在使用的功能:

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

以下是$url变量的示例:

  • http://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B5%D1%81%D1%82

    它将被很好地解码。结果:";Бре;

  • http://ru.wikipedia.org/wiki/%CC%EE%EB%EE%E4%E5%F7%ED%EE

    它不会变成好的。结果:���������,但应该是";Молодечно"。

怎么了?为什么?我试着在php网站上使用function.urldecode.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;
?>

提前感谢!

不确定你把那个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编码的

正如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:  Молодечно