mysqldump之后的MYSQL latin1和utf8
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqldump之后的MYSQL latin1和utf8相关的知识,希望对你有一定的参考价值。
我这样做了一个备份:
服务器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的数据时,我有类似的东西:“Général”。
我的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)
答案
当您在备份上遇到字符集问题时,应该尝试以良好的方式执行备份和恢复命令,而不使用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;
另一答案
您的数据库包含一些使用utf-8编码的数据,但您已将其存储在声明为latin1的表列中。大概你想要Général显示为Général。
您将不得不修复您的数据以解决此问题。要查找有问题的数据,请参阅此文章。
How can I find non-ASCII characters in MySQL?
以上是关于mysqldump之后的MYSQL latin1和utf8的主要内容,如果未能解决你的问题,请参考以下文章