Estoy migrando un db de mysql a postgresql. La intercalación predeterminada de mysql db es UTF8, postgres también usa UTF8 y estoy codificando los datos con pg_escape_string(). Por alguna razón, sin embargo, estoy corriendo en algunos errores cobardes sobre mala codificación:PostgreSQL + PHP + UTF8 = secuencia de bytes no válida para la codificación
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"
he estado hurgando tratando de resolver esto, y se dio cuenta que PHP está haciendo algo raro; si una cadena solo tiene ascii caracteres (por ejemplo, "hola"), la codificación es ASCII. Si la cadena contiene caracteres no ascii, dice que la codificación es UTF8 (por ejemplo, "Hëllo").
Cuando uso utf8_encode() en cadenas que ya son UTF8, mata los caracteres especiales y los desordena, así que ... ¿qué puedo hacer para que esto funcione?
(char exacta colgarlo en este momento es "", pero en lugar de buscar/reemplazar, me gustaría encontrar una mejor solución para este problema un poco no vuelva a suceder)
Después de algunas horas jugando con esto, estoy empezando a pensar que mysql ha permitido cadenas no utf8 en la base de datos, que es lo que está causando el problema .. – Ian