PDO x MySQL x HTML charset问题

时间:2014-07-06 15:57:59

标签: php mysql pdo

我特别焦虑地头疼;让我解释一下。

我正在使用PDO和MySql,这是我的示例代码:

$conexao = new \PDO('mysql:' .     'host=myhost;dbname=mydbname;charset=utf8'
            , 'myuser', 'mypass');
$conexao->setAttribute(\PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
$sth = $conexao->prepare('select * from usuario');
$sth->execute();
$res = $sth->fetchAll(\PDO::FETCH_ASSOC);
var_dump($res);

仅此代码将正确输出数据,表行中包含所有特殊字符。

但是如果我将此代码与utf8的html标签一起使用,那么当渲染到浏览器时,所有特殊字符都会转换为�。这是我的标签:

<meta charset="utf-8" />

如果删除此标记,数据会再次正确显示,但除了来自PDO的数据外,我的html的所有特殊字符都会混乱。

我的数据库的字符集是&#39; latin1&#39;,但我将其更改为&#39; utf8&#39;,没有任何更改。

为了让事情变得陌生,在我的发展环境中,这个问题不会发生;仅在已部署的应用程序中。我发现的是Web服务器中的PHP版本比我的开发环境中的版本旧。

这里有什么问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

在php脚本的顶部添加标题

标题('Content-Type:text / html; charset = utf-8');