Ingrid: migration von sql_ascii nach utf8

Hallo

Ich muss eine alte postgres-sql-ascii Datenbank, bzw. Teile davon, in eine neue postgres-utf8 DB migrieren.

Dazu habe ich ein PHP-Script geschrieben, das mir aus der alten DB selektieren und in die neue Db reinschreiben soll.

Das Problem: In der postgres-sql-ascii stehen Messwerteinheiten drin, z.B. µg/l.
Wenn ich das Script laufen lassen, kriege folgende Meldung:
ERROR: invalid byte sequence for encoding "UTF8": 0xb5 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding"

Kann mir bitte jemand sagen, wie diese Sonderzeichen richtig rübernehmen kann.

Gruss
Ingrid

  1. Tach!

    Das Problem: In der postgres-sql-ascii stehen Messwerteinheiten drin, z.B. µg/l.

    ASCII ist das nicht, eher ISO-8859-1 oder Win1252.

    Wenn ich das Script laufen lassen, kriege folgende Meldung:
    ERROR: invalid byte sequence for encoding "UTF8": 0xb5 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding"

    Der neue will wohl UTF-8 haben, und µ als 0xb5 ist zum Beispiel ISO-8859-1/Win1252. Das heißt also, dass du umkodieren musst, damit du dem neuen UTF-8-kodierte Daten senden kannst. Im einfachsten Fall reicht utf8_encode(), ansonsten die iconv-Extension. Ansonsten könnte ich mir noch vorstellen, dass man das "client_encoding" auf die korrekte Kodierung stellen kann.

    Kann mir bitte jemand sagen, wie diese Sonderzeichen richtig rübernehmen kann.

    Eigentlich ist das doch einfach. Wenn der eine Text Englisch ist und der Empfänger nur Französisch versteht, muss man übersetzen. Bei Zeichenkodierungen ist das ähnlich. Du solltest dich mit den Grundlagen vertraut machen, damit du die Herausforderungen im weiteren Verlauf verstehen und lösen kannst.

    dedlfix.