Salve a tutti, spero sia la sezione giusta, ho un problema in uno script php che fa utilizzo di database Mysql, ma non so esattamente quale dei due origini il problema.
Ho una tabella, con un campo di tipo varchar, e collation utf8_general_ci.
Per quanto ho capito, utf8_general_ci dovrebbe essere la codifica a cui in genere ci si riferisce con "unicode", o per lo meno, quello più diffuso, dovrebbe essere compatibile con ASCII, e codificare i caratteri con con un numero di byte variabile da 1 a 4, 1 se il carattere da rappresentare rientra tra quelli ASCII, di più se risulta essere un carattere più particolare.
Il mio problema è che inserendo del testo codificato in unicode (direttamente da phpMyAdmin, a "mano"), in cui sono presenti alcuni simboli matematici o lettere greche, questi vengono rappresentati correttamente finchè li visualizzo da phpMyAdmin, ma al momento della stampa in una pagina php, questi vengono sostituiti con punti di domanda.
Questo accade sia se la dichiarazione del charset nella pagina è corretta, sia se non lo è.
Inoltre, se la dichiarazione del charset nella pagina non corrisponde a "UTF-8" gli altri caratteri (accentate incluse) vengono visualizzati correttamente.
Se invece la dichiarazione del charset corrisponde a "UTF-8" subisco il solito problema delle lettere accentate (che diventano punti di domanda "racchiusi in un quadrato nero").
Se provo a rimediare utilizzando:
Codice PHP:
htmlentities("testo preso dal database...", ENT_QUOTES, 'UTF-8');
Non si presenta alcun errore, ma contrariamente a quanto ci si possa aspettare, il testo sparisce, non viene dato in output nemmeno un singolo carattere, come se non ci fosse alcun testo.
Non so davvero dove sbattere la testa, sbaglio nell'impostare la collation nel database? A settare "UTF-8" come charset nella pagina php? O a utilizzare htmlentities per la stampa?
Ringrazio per la pazienza, se avete letto fino a qui