如何阅读与PHP unicode的网址是什么?(How do I read a unicode ur

2019-10-18 14:48发布

我有一个Unicode URL:?\ test.php的STEXT =莫斯科

我想用$ _Get功能与STEXT价值的工作。 我有test.php的代码是:

<?php
$sVar = $_GET['sText'];

echo "Variable = $sVar";
?>

的问题是,上述的即将巴赫为:变量= ??????????

我需要做什么?

Answer 1:

  • 你需要与你test.php的返回UTF-8 Content-Type头header('content-type: text/html; charset=utf-8');
  • 您需要保存你test.php的UTF-8编码的(不知道这一点,但惯于反正伤)


Answer 2:

感谢所有的反馈。

我已经尝试了所有的例子,但我还是回来的问号,甚至保存为UTF-8之后。

是否有php.ini中我可能需要添加/启用可能允许支持unicode?

目前,我反正,下面的代码:

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<?php
$sVarControl = "Московский";
$sVar = $_GET['sText'];

echo "Control = $sVarControl <br />";
echo "Variable = $sVar <br />";

?>
</body>
</html>

产生下面的输出:

对照=莫斯科
变量= ??????????

因此,网页能够与工作和显示的Unicode的。 这是一个limitationof的$ _GET功能可能?


编辑

我刚才想运行在谷歌浏览器的页面,它是可以正常使用。 这使我想到了一个IE浏览器的设置。 不过什么? 我如何解决它?



Answer 3:

这对我来说工作得很好:

$sVar = $_GET['sText'];

echo urldecode($sVar);


Answer 4:

我试着使用的iconv()函数来解决你的问题(函数的参数可以不同,这取决于您的系统配置):

$get = iconv('CP1251', 'UTF-8', $_GET['text']);
echo 'Variable = '.$get; // Variable = Московский

你可以阅读有关的iconv功能 。 我希望,这将是对你有用。



Answer 5:

我终于解决了这一点,谢谢大家一些好的建议(看到这个帖子,以便快速应答的最后一段)。

我是做了几件事情错了这是刁难。

我第一次发现我的编码问题时,记录并没有获得写入我的数据库,该数据库和表格都设置为UTF-8,这样离开了PHP。

为了让事情简单我创建了一个测试PHP页面来说明问题。 当页面从URL获取($ _ GET)值,当我装我的测试页,我在URL test.php的一个Unicode参数这么做?STEXT =Московский

对于我的问题,我认为,是IE浏览器是如何互操作的URL,由于某种原因,它不能解码它或它识别为Unicode。 这成为aparrent当我发起了无法显示页IM浏览器,它完美地工作。

我继续使用下面的函数输出在Chrome和IE浏览器的完整URL

<?php
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

echo curPageURL();
?>

Internet Explorer 8中呼应了以下内容:

HTTP://localhost/FirstProject/test.php STEXT = ??????????

然而,铬,呼应编码网址:

HTTP://localhost/FirstProject/test.php STEXT =%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8 D0%B9%

正如你所看到Chrome的自动编码的URL,PHP被自动读取,并正确解码它,大概是因为我已经将内容类型设置为UTF-8(感谢菲利普)。

我仍然不知道为什么IE被表现得就像这一点,但它把我推的方向来编码调用页面的URL。 我打电话的页面的JavaScript所以我试图函数encodeURIComponent() 值得庆幸的是这个工作,现在即时得到在Chrome和IE相同的结果。

所以长话短说,如果我用encodeURIComponent()编码的URL呼叫的我保证我设定的目标PHP页面的内容类型header('content-type: text/html; charset=utf-8'); 所有的Unicode URL变量正确处理。

再次感谢你的帮助。 克雷格



文章来源: How do I read a unicode url with PHP?
标签: php unicode get