Sto migrando un db da mysql a postgresql. Le regole di confronto predefinite di mysql db sono UTF8, postgres utilizza anche UTF8 e sto codificando i dati con pg_escape_string(). Per qualsiasi motivo però, mi sto correndo in alcuni errori funky su Bad codifica:PostgreSQL + PHP + UTF8 = sequenza di byte non valida per la codifica
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"
Sono stato rovistando cercando di capire questo fuori, e ho notato che il PHP sta facendo qualcosa di strano; se una stringa ha solo caratteri ascii (ad esempio "ciao"), la codifica è ASCII. Se la stringa contiene caratteri non ascii, la codifica è UTF8 (ad esempio "Hëllo").
Quando uso utf8_encode() su stringhe che sono già UTF8, uccide i caratteri speciali e li rende tutti incasinati, quindi .. cosa posso fare per farlo funzionare?
(char esatto appenderlo in questo momento è "", ma invece di ricerca/sostituzione, mi piacerebbe trovare una soluzione migliore in modo da questo genere problema non accada di nuovo)
Dopo alcune ore di giocherellando con questo, in realtà sto iniziando a pensare che mysql abbia consentito stringhe non-utf8 nel db, che è ciò che sta causando il problema .. – Ian