2016-04-11 12 views
0

Ich möchte eine in Latin1 codierte SQL-Datei importieren. Ich möchte diese Dateicodierung beibehalten. Daten in SQL-Datei sind gut in Latin1 codiert.Falsche Codierung SQL-Datei in MySQL importieren

ich ausgeführt, um diesen Befehl ein:

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

Aber Daten in UTF-8 codiert werden in der Datenbank verschlüsselt. Ich verstehe nicht, warum Daten konvertiert werden. Ich sollte "é" (Latin1) erhalten und ich bekomme "é" (utf8).

habe ich meine Datenbank mit:

CREATE DATABASE Database CHARACTER SET latin1 COLLATE latin1_swedish_ci;

Können Sie mir bitte helfen, wie ich meine SQL-Datei enconding zu halten importieren kann?

Antwort

3

Der Datenbank-Zeichensatz kann durch den Tabellenzeichensatz überschrieben werden. Der Tabellenzeichensatz kann durch den Spaltenzeichensatz überschrieben werden. Bitte geben Sie SHOW CREATE TABLE an.

Welche Kodierung sind die Bytes in file.sql? Wenn das Zeichené ein Byte (hex E9) dauert, wird es latin1 codiert. Wenn es zwei Bytes (hex C3A9) dauert, dann ist es utf8. Wenn C3A9 ist interpretiert als Latein , it comes out as à © `. Dies nennt man Mojibake.

Mit den Worten --default-character-set=latin1 kündigen Sie an, dass die Bytes in der Quelle mit latin1 codiert sind.

Auch wenn die Quellbytes latin1 (zB hex 96) sind, kann die Spalte in der Tabelle CHARACTER SET utf8 sein. Die Codierung wird konvertiert (in C3A9), wenn die Einfügung durchgeführt wird.