У меня проблемы с импортом данных в мою базу данных postgreSQL, конечно, из-за кодировки. Вот что у меня есть:
Возникла исключительная ситуация при выполнении 'INSERT INTO table (id, name) VALUES (?,?)' С параметрами [574, "\ xf3"]:
SQLSTATE [22021]: Персонаж не входит в репертуар: 7 ERREUR: последовательность действий инвалида для кодировки «UTF8»: 0xf3
Видимо, кодируется символ ò
, закодированный \xf3
эта ошибка.
Когда я создаю свою базу данных Postgresql 11.5 с помощью команды:
php bin/console doctrine:database:create
со следующей конфигурацией доктрины и добавлением 3 последних строк
doctrine:
dbal:
driver: pdo_pgsql
url: '%env(resolve:DATABASE_URL)%'
default_table_options:
charset: utf8
collate: utf8_unicode_ci
У меня все та же ошибка. И в моем интерфейсе pgAdmin я вижу, что моя БД является init со следующим SQL:
CREATE DATABASE db
WITH
OWNER = postgres
ENCODING = 'UTF8'
LC_COLLATE = 'French_France.1252'
LC_CTYPE = 'French_France.1252'
TABLESPACE = pg_default
CONNECTION LIMIT = -1;
Очевидно, LC_COLLATE
и LC_TYPE
установлены неправильно.
И когда япопробуйте создать мою базу данных из pgAdmin. В выпадающих списках не предлагается utf8 .
И через командную строку она создает базу данных, но, похоже, не может найти правильную кодировку, так какесли символьный тип utf8 не был установлен (извините, все сообщения об ошибках по-французски):
postgres = # CREATE DATABASE "db" WITH OWNER = "postgres" ENCODING = 'UTF8' LC_COLLATE = 'fr_FR.utf8 'LC_CTYPE =' fr_FR.utf8 'ШАБЛОН template0;
ВНИМАНИЕ: нет определений в кодировке локали «fr_FR.utf8»: кодовый набор «CPutf8»
ВНИМАНИЕ: детерминант для кодировки «fr_FR.utf8»: кодовый набор «CPutf8»
И я также пытаюсь использовать utf8_encode()
php метод, но он ничего не сделал.
$entity->setName(utf8_encode($row['name']));
кто-нибудь как нибудь подскажет?