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

У меня есть база данных 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é».

Что я делаю не так?

1 Ответ

1 голос
/ 22 сентября 2011

Если вы используете 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 покажет вам кодировку базы данных.

...