【发布时间】:2019-02-25 21:05:42
【问题描述】:
我有一个托管 MySQL 的服务器,PHPMyAdmin 报告:
Server version: 5.1.56-community
MySQL charset: UTF-8 Unicode (utf8)
我使用mysqldump -uroot -p database > file.dump 或mysqldump -uroot -p database -r file.dump 导出一个sql(无论如何生成的两个文件都是相同的)。
在本地,我安装了 MySQL 5.5 和 HeidiSQL 9.5。
服务器的 SQL 文件 my.ini 有:
default-character-set=utf8
我把本地的my.ini文件改成了有
default-character-set=utf8
还有:
character-set-server=utf8
它们都设置为latin1。不知道为什么我在这里设置了character-set-server,而服务器没有。无论如何。
现在我启动 HeidiSQL,它显示会话参数的 utf8mb4 引用而不是 utf8。我不知道为什么:
现在,我导入我的转储文件,我发现即使显然所有内容都在 utf8 中配置,看起来我有一些编码问题。
à 等特殊字符在本地数据库中无法正确显示。
我做错了吗?
请注意,如果我在服务器上安装 HeidiSQL,变量选项卡会显示相同的 Session 和 Global 参数值,并且正确显示 à。
所以这可能是问题的根本原因,但我不知道如何解决它。如果我在导入 sql 文件之前更改了 Session 值,它不会解决问题,并且当我再次启动 HeidiSQL 时,值也会回到 utf8mb4。
【问题讨论】:
-
你为什么要运行 7 年的 mysql 版本?
-
@Evert:因为它在过去的 7 年里没有更新过;-) 这就是我今天正在研究这个的原因,试图将它迁移到一个新系统。
-
转储文件是 UTF-8 编码的吗?当您在文本编辑器中以 UTF-8 显式打开它时,字符看起来还好吗...?
-
@deceze:我用 Notepad++ 打开了文件,让我选择编码。
à字符在选择 UTF-8 时看起来正确(默认)。所以看起来文件是 UTF-8 编码的。
标签: mysql encoding utf-8 utf8mb4