Hi!
Bei der MySQL Verbindung verwende ich $DBO->query("SET NAMES 'utf8'");
Dies habe ich so auch bei Postgres versucht.
Einfach mal so, oder hast du dich schlau gemacht, ob das so geht?
Das Handbuch sagt, für die Client-Verbindungen wird die Kodierung der Datenbank angenommen. Außerdem könne man verbindungsspezifisch unter anderem mit SET NAMES eine individuelle Kodierung festlegen, woraufhin dann zwischen Client-Daten und Datenbank umkodiert wird.
Alle PHP Seiten stehen auf <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Unwichtig. Schau lieber genau dort, wo es Probleme gibt, also zwischen DBMS und PHP. Stimmen die Bytewerte, die zum DBMS gehen sollen und stimmen die, die von dort kommen?
Wenn ich bei Postgres in die Tabelle "mytext" in die Spalte "german" den Text "grün" speichern möchte, bekomme ich die Meldung:
Character not in repertoire: 7 FEHLER: ungültige Byte-Sequenz für Kodierung »UTF8«: 0xe3bc6e'
Wenn du dir das mal in Bits umrechnest, und dir dann anschaust, wie UTF-8 kodiert wird, sollte auffallen, dass PostgreSQL Recht hat. Das ist keine gültige UTF-8-Sequenz
E3 BC 6E
1110 0011 1011 1100 0110 0011
Mit 1110 fangen 3-Byte-Sequenzen an. Dabei müssen zwei mit 10 beginnende Bytes folgen. Das trifft für 6E nicht zu.
Im Webinterface wird mir insertText('gr??n',.. angezeigt.
Mal 6E allein betrachtet entspricht das dem n. Wenn man E3BC zu C3BC korrigiert, ergibt das ein ü. Die Frage ist also, wo die falsche Byte-Sequenz herkommt.
Lo!