2016-04-11 1 views
0

Я хотел бы импортировать файл SQL, закодированный в Latin1. Я бы хотел сохранить эту кодировку. Данные в файл sql хорошо закодированы в Latin1.Плохая кодировка импорта файла SQL в MySQL

Я выполнил эту команду:

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, чтобы сохранить enconding?

ответ

3

Кодировка базы данных может быть переопределена таблицей кодировки. Кодировка таблицы может быть переопределена кодировкой столбца. Пожалуйста, предоставьте SHOW CREATE TABLE.

Какая кодировка - это байты в file.sql? Если символ é принимает один байт (hex E9), то он кодируется latin1. Если требуется два байта (hex C3A9), то это utf8. Если C3A9 является истолковано as latin , it comes out as à © `. Это называется Mojibake.

Говоря --default-character-set=latin1, вы сообщаете, что байты в источнике закодированы latin1.

Даже если исходные байты являются latin1 (например, hex 96), столбец в таблице может быть CHARACTER SET utf8. Кодировка будет преобразована (в C3A9) при выполнении вставки.