我在MySQL 4.1服务器上有一个旧数据库,db包含一些用户输入的内容,我已将此数据库复制到新的MySQL 5服务器,当我查看打印内容的页面时,我看到黑钻石中间有问号的字符。这仅显示在新服务器上。
如果我将此标题添加到页面,则钻石不再显示:
header('Content-Type: text/html; charset=iso-8859-1');
如果我拿出那个标题,那么服务器会发送一个如下所示的默认标题,并且重新出现钻石
Content-Type:text / html;字符集= UTF8
如何在数据库中解决这个问题(例如对表进行某种转换),这样我就不必在所有页面中放置这个标题了?
更多信息:我使用mysqldump从旧服务器导出数据库,然后使用CentOS mysql命令行导入它。我也尝试使用phpMyAdmin导出,但结果相同。
编辑:
查看我的mysqldump文件,我可以看到所有的CREATE TABLE语句都有charset = Latin1,所以我认为我正在寻找的是一种以UTF8导出数据库的方法。我已经尝试将此选项添加到mysqldump但它没有任何效果,转储仍然显示Latin1:
- 默认字符集= UTF8
答案 0 :(得分:5)
尝试在连接到数据库后设置charset:
mysql_set_charset("utf8");
答案 1 :(得分:3)
除了Mysqli之外,Trevor所说的对我有用。
$mysqli->set_charset("utf8");
答案 2 :(得分:1)
连接mysql数据库后使用以下查询。
mysql_query("SET NAMES utf8");
希望这有帮助!