mysqldump之后的MYSQL latin1和utf8

问题描述 投票:1回答:2

我这样做了一个备份:

服务器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)
mysql utf-8
2个回答
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;

0
投票

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

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

How can I find non-ASCII characters in MySQL?

© www.soinside.com 2019 - 2024. All rights reserved.