Символы UTF-8 отображаются по-разному после импорта в mySQL

У меня есть база данных mySQL, полная символов с акцентом. БД периодически заполняется из MS Access 2010.

В Access вы увидите é è à Ü. В процессе экспорта в Access указана кодировка UTF-8.

Откройте полученный текстовый файл в UltraEdit на моем ПК, и вы увидите «Vieux Carré», а UE говорит, что это кодировка U8-DOS.

Файлы загружаются через FTP и импортируются с помощью запросов LOAD DATA LOCAL INFILE, подобных этому.

LOAD DATA LOCAL INFILE '$dir/$t.$ext' INTO TABLE `$t` FIELDS  OPTIONALLY ENCLOSED BY '|' TERMINATED BY ';' LINES TERMINATED BY '\n'

В mySQL сопоставление полей установлено на utf8_general_ci.

Если вы запросите mySQL из командной строки или из phpMyAdmin, вы увидите "Vieux Carré".

Что я делаю неправильно?


person jerrygarciuh    schedule 22.09.2011    source источник


Ответы (1)


Если вы используете LOAD DATA INFILE с файлом, кодировка которого отличается от используемой по умолчанию в вашей базе данных, вам нужно указать, в какой кодировке находится файл:

LOAD DATA LOCAL INFILE '$dir/$t.$ext'
INTO TABLE `$t`
CHARACTER SET utf8
FIELDS OPTIONALLY ENCLOSED BY '|' TERMINATED BY ';'
LINES TERMINATED BY '\n'

Обратите внимание, что набор символов базы данных распространяется на всю базу данных и отличается от набора символов table и набора символов column. SHOW CREATE DATABASE database_name покажет вам кодировку базы данных.

person John Flatness    schedule 22.09.2011
comment
Чувак, я мог бы поцеловать тебя. В следующий раз, когда ты будешь в Новом Орлеане, я должен тебе саммич! - person jerrygarciuh; 22.09.2011