我有一个unicode网址:\ test.php?sText =Московский
我想使用$ _Get函数来处理sText的值。我对test.php的代码是:
<?php
$sVar = $_GET['sText'];
echo "Variable = $sVar";
?>
问题在于以上是bach:变量= ??????????
我需要做什么?
答案 0 :(得分:1)
header('content-type: text/html; charset=utf-8');
答案 1 :(得分:1)
感谢所有反馈。
我已经尝试了所有的例子,但即使在保存为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>
产生以下输出:
Control =Московский
变量= ??????????
因此该页面能够使用和显示unicode。这可能是$ _GET函数的限制吗?
修改
我刚尝试在Google Chrome中运行该页面,它运行正常。这让我认为它是一个IE设置。但是什么?我该如何解决它?
答案 2 :(得分:1)
这对我来说很好用:
$sVar = $_GET['sText'];
echo urldecode($sVar);
答案 3 :(得分:0)
我尝试使用iconv()函数来解决您的问题(函数的参数可能会有所不同,具体取决于您的系统配置):
$get = iconv('CP1251', 'UTF-8', $_GET['text']);
echo 'Variable = '.$get; // Variable = Московский
您可以阅读iconv functions。我希望,这对你有用。
答案 4 :(得分:0)
我终于解决了这个问题,谢谢大家提供一些好的建议(请参阅本文最后一段的快速回答)。
我做了一些让事情变得困难的错误。
我首先注意到我的编码问题,当记录没有写入我的数据库时,db和表都被设置为utf-8以便离开php。
为了简单起见,我创建了一个测试php页面来演示问题。当页面从url获取($ _GET)值时,当我加载测试页面时,我在url test.php中使用unicode参数这样做了?sText =Московский
我认为,问题在于IE是如何互操作网址的,因为某些原因它无法解码或将其识别为unicode。当我启动Chrome浏览器失败页面时,这种情况变得很明显,而且效果非常好。
我继续使用以下函数在Chrome和IE中输出完整的网址
<?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回应了以下内容:
然而,
Chrome回显了一个已编码的网址:
你可以看到chrome自动编码url,PHP正在自动读取和解码,大概是因为我已经将内容类型设置为UTF-8(感谢Philippe)。
我仍然不确定为什么IE表现得像这样,但它让我朝着在调用页面中编码url的方向发展。我在javascript中调用该页面,所以我尝试了函数encodeURIComponent()
。值得庆幸的是,这很有用,现在我在CHROME和IE中得到了相同的结果。
长话短说,如果我使用encodeURIComponent()
来编码调用url,我确保将目标php页面的内容类型设置为header('content-type: text/html; charset=utf-8');
,所有unicode url变量都被正确处理。 / p>
再次感谢您的帮助。 克雷格