Ungültige Byte-Sequenz für "UTF8"

Hallo an alle,

ich versuche grad seit mehreren Tagen eine gut gefüllte MySQL Datenbank auf die PostgreSQL Datenbank zu migrieren. Alle möglichen Typumwandlungen habe ich bereits getan. Jetzt hänge ich allerdings noch an meinem hoffentlich letzten Problem bei der Umwandlung.

Ich bekomme bei psql beim Importieren der Tabellen folgenden Fehler:

FEHLER: ungültige Byte-Sequenz für Kodierung “UTF8”

Ich bekomme sehr sehr viele dieser Fehler. Meine Tabellen haben viele bytea-Felder in denen .docx Dateien gespeichert werden, die in Microsoft Word geschrieben wurden. Dort liegt wohl der Hund begraben. Das client_encoding von Postgre ist auf UTF8 eingestellt standardmäßig. Die Dateien sind meines Erachtens auch UTF8 kodiert. Wie gehe ich nun vor? Könnten es deutsche Sonderzeichen sein, die er nicht verarbeiten kann? Wenn ja wie kann ich das umgehen? Das ganze Projekt könnte scheitern wenn ich diese Portierung nicht hinbekomme.

Prüfe, ob das wirklich valides UTF8 ist. Wenn es von MySQL kommt, würde ich da erst einmal Zweifel anmelden. Falls das ein anderer Zeichensatz ist, dann client_encoding passend setzen (für den Import, das Server-Encoding auf UTF8 lassen)

Andreas

Findet denn für eine bytea Spalte überhaupt ein encoding/decoding statt? Das sollte doch nur auf text Spalten passieren, oder übersehe ich da was?

@castorp

Ja das hat mich auch gewundert, warum für ein bytea Feld ein Encoding passiert. Es sollte doch egal sein was dort reingespeichert wird. Meiner Meinung nach soll er einfach nur die Bits speichern und gut ist.

@akretschmer

Ja das kann natürlich sein dass die Datei kein UTF8 ist, weil das auch die einfachste Erklärung ist. Ich habe schon geguckt wie ich das Encoding der Microsoft Word docx Datei rausfinden kann aber nichts wirklich dazu gefunden für Windows ausser so ein conding_guesser Script von irgendjemanden. Ich werde da nochmal weiter forschen wie ich es 100pro rausbekomme.

Also “file -i ****.docx” sagt mir “charset=binary”.
Jetzt weiss ich allerdings nicht was ich damit anfangen soll. Jetzt ist auch die Frage ob ich unter Einstellungen im Server das Charset für den ganzen Server ändern muss?!? Was ist denn der Unterschied zwischen Server Encoding und Client Encoding? :confused:

Liebe Grüße
muRuS :slight_smile: