Ich habe eine einfache SQL-Syntax zum Einfügen in die Tabelle. Ich verwende Postgresql 8.4 und habe bereits die Datenbankcodierung auf UTF8 und POSIX für Sortierfolge und Zeichentyp eingestellt.Postgresql PHP ungültige Byte-Sequenz für die Codierung UTF8
Die Abfrage ist in Ordnung, wenn ich es unter pgadmin3 ausführen, aber Fehler, wenn ich in PHP ausführen.
"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\"
Also versuchte ich Namen und client_encoding von PHP (PDO) zu setzen, aber immer noch das gleiche Problem
$instance->exec("SET client_encoding = 'UTF8';");
$instance->exec("SET NAMES 'UTF8';");
pg_set_client_encoding($link, "UNICODE");
meine seiner Arbeit, wenn ich nativen postgresql Treiber pg_pconnect
, bin mit aber derzeit Ich benutze PDO als Treiber.
und i gesetzt auch schon mb_internal_encoding('UTF-8');
Gibt es eine andere Möglichkeit, dieses Problem zu beheben?
Dieser Fehler nur dann angezeigt, wenn ich nicht ascii Wort wie arabisches oder japanisches Wort
Sie können Ihre gesamte Link-/Datenbankcodierung so einstellen, dass sie utf-8 verwendet. Wenn die ursprüngliche Zeichenfolge jedoch nicht utf-8-codiert ist, wird dennoch ein Fehler verursacht. – datasage
Können Sie bitte das Ergebnis von 'SHOW client_encoding;' von pgAdmin posten? – Houari
Bitte zeigen Sie eine Ein-Zeichen-Eingabe und die entsprechende Byte-Sequenz aus dem Fehlerbericht (wie '0xd85b'). Sie sollten uns auch mitteilen, welche Standardtextkodierung Ihr Betriebssystem hat. Wenn Sie nicht wissen, führen Sie den Befehl 'locale' aus, wenn Sie Linux/Unix verwenden. Ohne die ursprüngliche Kodierung und den ursprünglichen Text zu kennen, ist es schwer, viel zu sagen. –