当UTF8标头发送时,页面上的黑钻石问号字符

时间:2012-10-18 14:33:28

标签: php mysql utf-8 character-encoding

我在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

3 个答案:

答案 0 :(得分:5)

尝试在连接到数据库后设置charset:

mysql_set_charset("utf8");

答案 1 :(得分:3)

除了Mysqli之外,Trevor所说的对我有用。

$mysqli->set_charset("utf8");

答案 2 :(得分:1)

连接mysql数据库后使用以下查询。

mysql_query("SET NAMES utf8");

希望这有帮助!