我特别焦虑地头疼;让我解释一下。
我正在使用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版本比我的开发环境中的版本旧。
这里有什么问题?
谢谢!
答案 0 :(得分:0)
在php脚本的顶部添加标题
标题('Content-Type:text / html; charset = utf-8');