mysqldump之后的MYSQL latin1和utf8

时间:2013-06-22 14:30:09

标签: mysql utf-8

我做了这样的备份:

服务器A: mysqldump --all-databases -u user -ppwd --default-character-set = latin1> backup.sql

服务器B: mysql -u user -ppwd --default-character-set = latin1< backup.sql

但是现在,当我用PHP显示来自MYSQL的数据时,我有类似的东西: “GA©NA©劳尔埃”。

我的html页面是latin1。我的数据库是latin1。

如果我输入utf8_decode($ mydata);我得到了正确的结果。 如何配置MYSQL以使数据库结果为latin1?

从服务器B:

mysql> SHOW VARIABLES WHERE variable_name like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

2 个答案:

答案 0 :(得分:1)

如果备份中的字符集出现问题,您应该尝试以良好的方式执行备份和恢复命令,而不使用shell的<>重定向器,因为重定向可能会中断数据库文本的字符集。

<强>备份

mysqldump -u root -p --opt --all-databases -r backup.sql

<强>恢复

mysql -uuser -p --default-character-set=utf8 database
mysql> SET names 'utf8';
mysql> SOURCE backup.sql;

答案 1 :(得分:0)

您的数据库包含一些使用utf-8编码的数据,但您已将其存储在声明为latin1的表列中。大概你想要Général显示为Général。

您将不得不修复您的数据以解决此问题。要查找有问题的数据,请参阅此文章。

How can I find non-ASCII characters in MySQL?