У меня есть база данных 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-светильники)?. Я успешно импортировал его в прошлом. Я не помню, что изменилось с тех пор, как
\xE3\xA3o To...
Хорошо, что это не действительная последовательность байтов. ã
в UTF-8 должно быть \xC3\xA3
. Похоже, как-то кто-то загрузил данные импорта как ISO-8859-1 и сфотографировал его в нижний регистр, преобразовая байт C3
в E3
. Естественно, что результаты больше не UTF-8.
Вам потребуется дополнительная информация о процессе импорта, чтобы сказать больше.
Я бы не использовал 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.
Поместите <?php header('Content-Type: text/plain; charset=utf-8'); ?>
вверху вашего файла fixtures.yml.