Come modificare la codifica dei caratteri di una connessione PDO / SQLite in PHP?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Sto riscontrando un piccolo problema con un'app php-gtk che continua a funzionare in stringhe non utf8, ho scoperto che il problema è nella connessione al database, anche quando si suppone che il database sia in UTF-8.

Avevo provato con "SET CHARACTER SET utf8" (modalità MySQL) e "SET NAMES UTF8" e non succede nulla (non ci sono informazioni su nessuno di questi comandi nel " Lingua della query compresa da SQLite " pagina, quindi non mi sorprende).

PD: forse la connessione è già in UTF-8 e i dati non lo sono, ma se c'è un modo per cambiare la codifica della connessione questa domanda sarebbe comunque utile.

È stato utile?

Soluzione

Per quanto ne so, SQLite ha solo un'impostazione per charset , che è a livello di database. Non è possibile modificare la codifica sulla connessione.

L'API C ha due modi diversi di aprire una connessione, sia come UTF- 8 o UTF-16. Mi aspetto che il modulo SQLite di PHP (e quindi il PDO) utilizzi semplicemente la versione UTF-8. Se è corretto, mi aspetto che una connessione SQLite sia sempre UTF-8. Ciò significa che devi codificare / decodificare manualmente le stringhe con utf8_encode / utf8_decode .

Vedi anche: http://www.alberton.info/dbms_charset_settings_explained.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top