У меня есть простой синтаксис SQL для вставки в таблицу. Я использую Postgresql 8.4 и уже установил кодировку базы данных UTF8 и POSIX для сортировки и типа символов.Postgresql Неверная последовательность байтов PHP для кодирования UTF8
Запрос прекрасен, если я запустил его под pgadmin3, но принесу ошибку, если я выполняю на PHP.
"Internal Server Error: SQLSTATE[22021]:
Character not in repertoire: 7 ERROR:
invalid byte sequence for encoding \"UTF8\": 0xd85b\nHINT:
This error can also happen if the byte sequence does not match the encoding expected by the server,
which is controlled by \"client_encoding\"
Так я попытался установить ИМЕНА и client_encoding из PHP (PDO), но по-прежнему имеют те же проблемы
$instance->exec("SET client_encoding = 'UTF8';");
$instance->exec("SET NAMES 'UTF8';");
pg_set_client_encoding($link, "UNICODE");
Мой будет работать, если я использую родной драйвер PostGreSQL pg_pconnect
, но в настоящее время Я использую PDO в качестве драйвера.
и я также уже установлены mb_internal_encoding('UTF-8');
Есть ли другой способ решить эту проблему?
Эта ошибка появляется только тогда, когда я пытаюсь вставить слово нон ASCii как арабский или японский слово
Вы можете установить всю вашу кодировку ссылок/базы данных для использования utf-8, но если исходная строка не кодируется utf-8, она все равно вызовет ошибку. – datasage
Не могли бы вы отправить результат 'SHOW client_encoding;' из pgAdmin? – Houari
Пожалуйста, покажите односимвольный ввод и соответствующую последовательность байтов из отчета об ошибке (например, '0xd85b'). Вы также должны сообщить нам, что такое стандартная текстовая кодировка вашей операционной системы; если вы не знаете, запустите команду 'locale', если вы находитесь в Linux/unix. Не зная исходную кодировку и оригинальный текст, трудно сказать много. –