Sto attualmente scrivendo un'applicazione web in PHP che, fra le varie cose, va anche a leggere delle stringhe di testo in un database MySQL per poi stamparle a schermo col classico comando echo. Tuttavia non riesco a leggere correttamente delle stringhe di testo che contengono dei caratteri accentati quali à è oppure lettere tedesche come ü, ö, ...
Dal punto di vista della pagina web (in XHTML 1.0 Strict), la dichiarazione del charset è:
E se vado a scrivere già direttamente nel <body> nel codice HTML viene visualizzato correttamente.
Dal punto di vista del database MySQL, la stringa la estrapolo da una tabella, dalla colonna TextMessage che è dichiarata come latin1_german1_ci (ma anche come utf8_unicode_ci o altri dopo non funziona), e se vado ad aprire il database MySQL online con phpMyAdmin, quando visualizzo il contenuto della tabella la stringa è visualizzata correttamente con le à.
Quando però nella mia pagina eseguo una query del tipo
Tutte le stringhe che contengono lettere accentate, ecc. vengono rimpiazzate dal solito generico simbolo ?. Non riesco proprio a venirne a capo, in quanto scrivendo direttamente della pagina funziona, leggendo il contenuto del database da phpMyAdmin funziona, ma leggendole da PHP no.
Hmtlentities è quello che mi risolve il problema, ma me ne crea un altro. La mia stringa è del tipo Oggi <i>abbiamo</i> già visto che..., ovvero contiene anche semplice codice HTML per il grassetto, corsivo o sottolineato, e questo così facendo non viene più interpretato come HTML, ma appunto stampato a schermo come <i> (poiché le < > sono rimpiazzate dal codice HTML). Potrei eventualmente risolvere inventandomi un tag per il corsivo e poi facendo sostituire a PHP con strreplace dopo hmtlentities, ma se ti viene in mente qualcosa di meno grezzo...
Esiste la funzione htmlspecialchars che si occupa solo dei simboli HTML < > %'", quindi il risultato da me voluto lo ottengo tramite
Un po' machiavellico ma funziona! Grazie per l'aiuto.
MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .
Copyright 2008 MegaLab.it - Tutti i diritti sono riservati