mysqldump 之后的 MYSQL latin1 和 utf8

标签 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 <备份.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/

相关文章:

php - 如果记录不在 SQL 中,则创建一个选项

mysql - 无法在 MySql 中创建外键

php - 使用 PHP 时未从 firebird 数据库接收到正确的数据

java - Windows 上的 Excel 中无法正确显示西类牙语特殊字符适用于 Linux

ruby - 如何解码通过 Net::IMAP 在 UTF8 中获取的主题? ( ruby )

mysql - MySQL 查询中 SELECT 语句后的高级参数

php - 选择当月的记录

mysql - Yii2:根据属性显示GridView结果

utf-8 - 如何使用 pdftotext 将文本文件保存为 UTF-8 格式

python - 在 python 2 中用十六进制字符解码字符串