我做了这样的备份:
服务器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)
答案 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。
您将不得不修复您的数据以解决此问题。要查找有问题的数据,请参阅此文章。