Punto informatico Network
Domande & Risposte
20080829215405

[MySQL+PHP] Lettere accentate rimpiazzate dal punto interrogativo

01/07/2010
- A cura di
Tecniche Avanzate - MySQL e PHP non vanno d'accordo con le accentate? Ecco come risolvere il problema, visualizzando dati sempre corretti.

Correlati

  Nessun contenuto correlato disponibile

Tag

Passa qui con il mouse e visualizza le istruzioni per utilizzare i tag!

 

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.

 
Domanda posta da M@ttia
Per MegaLab.it, risponde M@ttia

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.


 

Segnala ad un amico

Tuo nome Tuo indirizzo e-mail (opzionale)
Invia a:
    Aggiungi indirizzo email
    Testo

    © Copyright 2024 BlazeMedia srl - P. IVA 14742231005

    • Gen. pagina: 0.35 sec.
    •  | Utenti conn.: 65
    •  | Revisione 2.0.1
    •  | Numero query: 64
    •  | Tempo totale query: 0.12