错误编码将 SQL 文件导入 MySQL

Bad encoding import SQL file into MySQL

我想导入一个编码为 Latin1 的 SQL 文件。我想保留此文件编码。 sql 文件中的数据被很好地编码为 Latin1。

我执行了这个命令:

mysql -hlocalhost -uroot -p Database --default-character-set=latin1 < file.sql

但是数据被编码成utf8编码到数据库中。我不明白为什么要转换数据。我应该获得“É”(Latin1)并且我获得“é”(utf8)。

我用 :

创建了我的数据库

CREATE DATABASE Database CHARACTER SET latin1 COLLATE latin1_swedish_ci;

你能帮帮我吗,我怎样才能导入我的 SQL 文件以保持编码?

数据库字符集可能被 table 字符集覆盖。 table 字符集可能会被列字符集覆盖。请提供 SHOW CREATE TABLE.

file.sql中的字节是什么编码?如果 character é 占用一个 byte (hex E9),那么它被编码为 latin1。如果需要两个bytes(十六进制C3A9),那么就是utf8。如果 C3A9解释 为拉丁语, it comes out asé`。这叫做 Mojibake。

通过说 --default-character-set=latin1,您宣布源中的字节编码为 latin1。

即使源字节是 latin1(例如 hex 96),table 中的列也可以是 CHARACTER SET utf8。执行插入时编码将被转换(到 C3A9)。

mysql -u your-username -p your-password --database your-db --default-character-set utf8mb4 < my_data.sql

成功了。

编码仍然是人间地狱,不明白为什么 MySql/Maria 仍然没有默认为 UTF-8,甚至忽略了文件的导入格式。