错误编码将 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,甚至忽略了文件的导入格式。
我想导入一个编码为 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,甚至忽略了文件的导入格式。