Сопоставление базы данных MySQL и набор символов

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, это было первое, что я проверил.
Теги:
character-encoding
yaml
symfony1

3 ответа

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 и задачей импорта данных)
Показать ещё 1 комментарий
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.

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню