导入sql文件时出现UTF-8编码问题

jpo*_*o38 3 mysql encoding utf-8 utf8mb4

我有一台托管 MySQL 的服务器,PHPMyAdmin 报告:

Server version: 5.1.56-community
MySQL charset: UTF-8 Unicode (utf8)
Run Code Online (Sandbox Code Playgroud)

我使用mysqldump -uroot -p database > file.dumpor导出一个 sql mysqldump -uroot -p database -r file.dump(无论如何,两个生成的文件都是相同的)。

在本地,我安装了 MySQL 5.5 和 HeidiSQL 9.5。

作为服务器的 SQL 文件 my.ini 有:

default-character-set=utf8
Run Code Online (Sandbox Code Playgroud)

我将本地 my.ini 文件更改为

default-character-set=utf8
Run Code Online (Sandbox Code Playgroud)

但是也:

character-set-server=utf8
Run Code Online (Sandbox Code Playgroud)

他们都被设置为latin1。不知道为什么我在character-set-server这里设置而服务器没有。反正。

现在我启动 HeidiSQL,它显示utf8mb4引用而不是utf8会话参数。我不知道为什么:

在此处输入图片说明

现在,我导入我的转储文件,我看到即使所有内容都明显配置在utf8.

在服务器上,我看到: 在此处输入图片说明

在本地,在 HeidiSQL 中,我看到: 在此处输入图片说明

à本地数据库上未正确显示之类的特殊字符。

难道我做错了什么?

请注意,如果我在服务器上安装 HeidiSQL,变量选项卡会显示相同的SessionGlobal参数值,并且à显示正确。

所以这可能是问题的根本原因,但我不知道如何解决它。如果我在导入 sql 文件之前更改会话值,它不会解决问题,并且utf8mb4当我再次启动 HeidiSQL 时,值也会恢复。

jpo*_*o38 6

感谢 deceze 评论,我可以解决这个问题。

在 HeidiSQL 中,当我选择要执行的 sql 文件时,实际上有一个我最初没有注意到的“ncoding”选项;-)

如果我保持“自动检测”,导入会生成不良内容(带有 mojibake 字符)

如果我强制“UTF-8”,则导入是完美的

不知道为什么 HeidiSQL 无法自动检测编码...