Ich migriere eine db von mysql nach postgresql. Die Standardsortierung der MySQL-Datenbank ist UTF8, postgres verwendet auch UTF8, und ich kodiere die Daten mit pg_escape_string(). aber aus irgendeinem Grund, ich laufe in einige flippige Fehler über schlechte Codierung:PostgreSQL + PHP + UTF8 = Ungültige Bytesequenz für die Kodierung
pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xeb7374 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client"
Ich habe versucht worden Stochern dies herauszufinden, und bemerkte, dass php etwas seltsam tut; Wenn ein String nur Ascii-Zeichen enthält (z. B. "Hallo"), ist die Codierung ASCII. Wenn die Zeichenfolge irgendwelche nicht-ASCII-Zeichen enthält, heißt es, dass die Codierung UTF8 ist (z. B. "Hallo").
Wenn ich utf8_encode() für Strings benutze, die bereits UTF8 sind, werden die speziellen Zeichen gelöscht und alle durcheinander gebracht, also ... was kann ich tun, um das zu erreichen?
(die genaue char es oben hängen jetzt ist „“, aber statt nur suchen/ersetzen, Ich mag würde eine bessere Lösung, so das ein bisschen Problem wieder passiert nicht finden)
Nach ein paar Stunden damit zu spielen, fange ich tatsächlich zu denken, dass mysql nicht-UTF8-Strings in die db erlaubt hat, was das Problem verursacht .. – Ian