当我看到使用phpmyadmin存储在mysql数据库中的数据时,字符完全存储为
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
</body>
</html>
我得到了方形而不是重音字符,然而,我没有这个问题与任何重音字符上的静态内容,还没有从mysql加载在同一页面。
当我在页面的源代码上看到它们似乎是相同的!例如:
部分静态数据在源代码上显示为:
éçà
mysql原始数据的一部分:
éçà
i tried replace
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1552" />
,结果我得到mysql一个固定的,静态的正方形!
提示吗?
这是非常常见的字符集问题,您需要为MySQL连接手动设置连接编码(这些应该是建立连接后执行的第一个查询):
SET NAMES utf8;
SET CHARACTER SET utf8;
并且还要确保每个表都将CHARACTER SET
设置为UTF-8
。
看起来像是配置错误问题。很可能你的数据库或驱动程序没有使用UTF-8。
当您更改为windows-1552
和静态文件时,来自DB的数据显示OK的事实并不意味着您的源文件(正确地)在UTF-8中,但来自DB的数据以错误的编码格式到达。
无论发生什么,请坚持使用UTF-8。
UPDATE:有一个线程解释如何自动设置连接的编码:
在my.cnf?