我有一个Unicode URL:?\ test.php的STEXT =莫斯科
我想用$ _Get功能与STEXT价值的工作。 我有test.php的代码是:
<?php
$sVar = $_GET['sText'];
echo "Variable = $sVar";
?>
的问题是,上述的即将巴赫为:变量= ??????????
我需要做什么?
我有一个Unicode URL:?\ test.php的STEXT =莫斯科
我想用$ _Get功能与STEXT价值的工作。 我有test.php的代码是:
<?php
$sVar = $_GET['sText'];
echo "Variable = $sVar";
?>
的问题是,上述的即将巴赫为:变量= ??????????
我需要做什么?
header('content-type: text/html; charset=utf-8');
感谢所有的反馈。
我已经尝试了所有的例子,但我还是回来的问号,甚至保存为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浏览器的设置。 不过什么? 我如何解决它?
这对我来说工作得很好:
$sVar = $_GET['sText'];
echo urldecode($sVar);
我试着使用的iconv()函数来解决你的问题(函数的参数可以不同,这取决于您的系统配置):
$get = iconv('CP1251', 'UTF-8', $_GET['text']);
echo 'Variable = '.$get; // Variable = Московский
你可以阅读有关的iconv功能 。 我希望,这将是对你有用。
我终于解决了这一点,谢谢大家一些好的建议(看到这个帖子,以便快速应答的最后一段)。
我是做了几件事情错了这是刁难。
我第一次发现我的编码问题时,记录并没有获得写入我的数据库,该数据库和表格都设置为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变量正确处理。
再次感谢你的帮助。 克雷格