2013-09-26 4 views
0

Мы запускаем cron-скрипт, который берет новых пользователей из csv и вставляет их в нашу базу данных. Он терпит неудачу, когда он сталкивается с пользователем со специальным символом в их имени, но я не понимаю, почему, насколько я вижу, все настроено так, чтобы оно работало.специальные символы mysql - неправильное строковое значение ' xE1n'

Вот пример имени он неисправный на: сообщение

Siobhán 

Ошибки:

!! Incorrect string value: '\xE1n' for column 'firstname' at row 1 

И тогда var_dump данных он пытается вставить имеет имя, как: Siobh так он обрезается специальными символами

Вот результат отображения переменных типа «char%» в нашей базе данных:

character_set_client utf8 
character_set_connection utf8 
character_set_database utf8 
character_set_filesystem binary 
character_set_results utf8 
character_set_server utf8 
character_set_system utf8 
character_sets_dir /usr/share/mysql/charsets/ 

Сопоставление таблицы пользователей utf8_unicode_ci

по сопоставлению с FirstName и LastName колонн utf8_unicode_ci

Заголовок сценария PHP устанавливает:

content-type: text/html; charset=utf-8 

И когда я запустите mb_detect_encoding() на переменную перед ее передачей в запрос, она возвращается как UTF-8

Итак, у меня нет идей о том, почему он не работает ...

Есть ли у кого-нибудь идеи относительно того, где мы ошибаемся?

Благодаря

+0

Вы сохранили CSV как UTF-8? – DanFromGermany

+0

csv генерируется автоматически скриптом из другого отдела. Есть все равно, чтобы проверить? –

+0

Открыть с помощью текстового редактора. Notepad ++ соответствует моим потребностям. Убедитесь, что ваши другие скрипты сохранены как utf-8, и все данные, которые вы копируете, кодируются utf-8. – DanFromGermany

ответ

0

Как мы уже нашли проблему в комментариях, вот решение:

Программа создания файла CSV, это создать файл в формате ANSI. Нужно писать в UTF-8.

Это означает, что фактический источник данных должен быть UTF-8, и все ваши файлы PHP также должны быть UTF-8.

Смотрите эту помощь: http://www.php.net/manual/de/function.fopen.php#104325

Где ваши сценарии принимает данные и в формате CSV, данные должны быть преобразованы или уже быть в UTF-8.

Смежные вопросы