我做了这样的备份:
服务器A: mysqldump --all-databases -u user -ppwd --default-character-set=latin1 > backup.sql
服务器 B: mysql -u user -ppwd --default-character-set=latin1 <备份.sql
但是现在,当我用 PHP 显示来自 MYSQL 的数据时,我有类似的东西: “一般”。
我的 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;
关于mysqldump 之后的 MYSQL latin1 和 utf8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251832/