2010-02-05 6 views
0

У меня есть базы данных MySQL, который имеет параметры сортировки и наборы символов следующим образом:и набор символов

mysql> show variables like "character_set_database"; 
+------------------------+-------+ 
| Variable_name   | Value | 
+------------------------+-------+ 
| character_set_database | utf8 | 
+------------------------+-------+ 
1 row in set (0.00 sec) 

mysql> show variables like "collation_database"; 
+--------------------+-----------------+ 
| Variable_name  | Value   | 
+--------------------+-----------------+ 
| collation_database | utf8_unicode_ci | 
+--------------------+-----------------+ 
1 row in set (0.00 sec) 

У меня есть таблица стран, которая состоит из, идентификатор и имя. Когда я пытаюсь импортировать эту страну (как, например, с «иностранными» символами)

São Tomé and Príncipe 

I get the following error: 

    Unable to execute INSERT statement. [wrapped: SQLSTATE[HY000]: General error: 
1366 Incorrect string value: '\xE3\xA3o To...' for column 'name' at row 1] 

я импортировал эти данные в прошлом - Кто-нибудь есть какие-либо идеи, почему я не могу импортировать эти данные (как YML приборов)? , Я успешно импортировал его в прошлом. Я не помню, что изменилось с тех пор, как

+0

Просто предположение: Вы редактировали файл тем временем? Является ли кодировка еще UTF-8? –

+0

Да, кодировка файла по-прежнему UTF-8, это было первое, что я проверил. –

ответ

2
\xE3\xA3o To... 

Ну, это правильно, это не действительная последовательность байтов. ã в UTF-8 должно быть \xC3\xA3. Похоже, что кто-то загрузил данные импорта как ISO-8859-1 и сфотографировал его в нижний регистр, преобразовывая C3 байт в E3. Естественно, что результаты больше не UTF-8.

Для получения более подробной информации о процессе импорта потребуется больше.

+0

Боб: данные импортируются как файл оснастки (в формате YML) с помощью задачи Symfony (v1.31) «symfony propel: data-load. Как я упоминал ранее, файл был сохранен в формате UTF-8. Я развиваюсь на платформе Windows. НТН. –

+0

Боб: есть все равно, чтобы регистрировать запросы, отправленные в mysql во время импорта? - (если вы не знакомы с инфраструктурой Symfony и задачей импорта данных) –

+0

Да, я не знаком с Symfony, но http://www.symfony-project.org/book/1_2/16-Application-Management- Инструменты считают, что файл '..._ dev.log' должен регистрировать запросы? Я не могу сразу увидеть какой-либо документ для процесса загрузки данных, который говорит что-нибудь о нижнем индексе, но * что-то нужно делать. Как еще одна мысль, ваша связь сама по себе использует UTF-8? AIUI, вы должны иметь 'encoding: utf8' в вашем' databases.yml'. – bobince

0

Положите <?php header('Content-Type: text/plain; charset=utf-8'); ?> в начало вашего файла fixtures.yml.

0

Я бы не использовал fixtures.yml для загрузки сложных данных, подобных этому. У меня очень похожая ситуация/настройка, так как вы и я без проблем используем MySQL LOAD DATA INFILE.

LOAD DATA INFILE 'C:/development/cities.csv' INTO TABLE project.city CHARACTER SET utf8 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r'; 

... где city.csv является экспортом UTF-8 из OpenOffice Calc.

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

  • Нет связанных вопросов^_^