¿Cómo cambiar la codificación de caracteres de una conexión PDO / SQLite en PHP?

StackOverflow https://stackoverflow.com/questions/263056

  •  06-07-2019
  •  | 
  •  

Pregunta

Tengo un pequeño problema con una aplicación php-gtk que sigue funcionando en cadenas que no son utf8, descubrí que el problema está en la conexión de la base de datos, incluso cuando se supone que la base de datos está en UTF-8.

Intenté con el " SET CHARACTER SET utf8 " (modo MySQL) y el " SET NAMES UTF8 " y no pasa nada (no hay información sobre ninguno de estos comandos en el " Lenguaje de consulta comprendido por SQLite " página tampoco, así que no estoy sorprendido por eso).

PD: Tal vez la conexión ya esté en UTF-8 y los datos no, pero si hay una manera de cambiar la codificación de conexión, esta pregunta aún sería útil.

¿Fue útil?

Solución

Por lo que puedo decir, SQLite solo tiene una configuración para charset , que está en un nivel por base de datos. No puede cambiar la codificación en la conexión.

La API de C tiene dos formas diferentes de abrir una conexión, ya sea como UTF- 8 o UTF-16. Esperaría que el módulo SQLite de PHP (y, por lo tanto, PDO) simplemente use la versión UTF-8. Si eso es correcto, esperaría que una conexión SQLite sea siempre UTF-8. Esto significa que debe codificar / decodificar cadenas manualmente con utf8_encode / utf8_decode .

Ver también: http://www.alberton.info/dbms_charset_settings_explained.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top