• User

    lettere accentate in tabella Mysql

    Ciao a tutti.
    Non so se questo sia il posto giusto ma penso di si, sto utilizzando un form php per inserire un testo in due campi di una tabella Mysql.
    Riscontro problemi di visualizzazione in particolare per le vocali accentate in quanto Firefox visualizza un rombo nero con dentro il punto interrogativo, con IE ed Opera appaiono dei quadretti bianchi al posto delle vocali accentate.
    Ho provato anche a inserire caratteri speciali come à è ecc. ma il risultato non cambia.
    Qualcuno può darmi qualche suggerimento per risolvere il problema?
    Preciso che i campi interessati sono "varchar(100)" e "longtext"
    Grazie in anticipo


  • User

    E' un problema di codifica, probabilmente lato client in fase di visualizzazione.

    Devi assicurarti che la codifica con cui sono salvati i tuoi files (mettiamo caso sia utf-8) sia la stessa impostata nel meta tag dedito nella paginetta che viene restituita in output.

    Se il problema persiste, probabilmente il problema di codifica dei dati avviene in fase di scrittura sul database. In quel caso assicurati che la codifica sia stata standardizzata in tutto il sito, dopodichè riesegui l'inserimento e vedi come va 😉


  • User

    ciao Back,
    la procedura è composta da tre files: il form, il save e la pagina di visualizzazione.
    Ho provato a codificarle tutte e tre in due modi diversi:

    con
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
    le anomalie di visualizzazione spariscono, per contro appare il fastidioso "" ad inizio pagina.

    con
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    il fastidioso "" sparisce ma tornano i quadretti e i punti interrogativi.

    Preciso che il doc type per tutte è:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ....

    Un'altra cosa, per la formattazione del testo in fase di scrittura dell'articolo utilizzo tinymce, può influire?

    Grazie intanto


  • User

    Allora il punto è questo: il contenuto della tua pagina è codificato in iso-8859-1 (quindi devi usare questa codifica) ma il file in se (chessò il tuo index.php) è salvato codificato in utf-8.

    Questo spiega perchè ne compare la Byte Order Mark (  ) quando usi una codifica diversa.

    La soluzione può essere di aprire quel file con blocco note e di eliminare il  se lo vedi, se non lo vedi ti basterà eseguire un salvataggio del file.

    Se ci sono files inclusi lato php nella pagina salvali secondo la medesima codifica, altrimenti generano questo output scomodo che poi ti ritrovi nella pagina principale.

    La DTD imposta una specifica che consente al browser di capire il tipo di standard adoperato per il markup, non influisce sulla codifica del file in questione 😉

    Fammi sapere come va 🙂


  • User

    OK! Ho codificato tutto in iso-8859-1e le anomalie di visualizzazione sono sparite, in compenso appaiono i famosi (  ).
    Proverò a controllare che tutti i files della pagina abbiano la stessa codifica ma il problema principale l'ho risolto.
    Grazie Back ciao


  • User Attivo

    Ciao eisenblu,
    ti segnalo questa discussione, dove ho spiegato come impostare il database e le pagine per utilizzare la codifica utf-8, che evita il problema delle lettere accentate:
    http://www.giorgiotave.it/forum/795080-post2.html

    In alternativa puoi utilizzare la codifica iso-8859-1, ma tutti i caratteri accentati (e non solo quelli) devono essere sostituiti con la funzione htmlentities (prima dell'inserimento nel database).

    Ti saluto,
    Luca Bartoli


  • User

    Ciao Luca,
    grazie del suggerimento, appena possibile lo metterò in pratica.
    Ciao


  • User

    @lucabartoli said:

    In alternativa puoi utilizzare la codifica iso-8859-1, ma tutti i caratteri accentati (e non solo quelli) devono essere sostituiti con la funzione htmlentities (prima dell'inserimento nel database).
    Se usi una codifica discordante tra archiviazione e visualizzazione si, è necessario adoperare htmlentities anche se non è la soluzione più corretta a questo tipo di problema in quanto basta allineare tutto secondo la medesima codifica.

    Visto che le sue informazioni testuali sono già tutte codificate in iso-8859-1 non ha bisogno di farlo, gli basta solo impostare il meta con la codifica adeguata (come dimostra il risultato delle prove che ha effettuato). Il BOM di utf-8 che appare usando la iso si elimina in due secondi con un qualsiasi editor testuale (oppure forzando il charset di restituzione dell'output).

    Dirgli di cambiare la codifica ovunque, di usare soluzioni lato php e mysql complica inutilmente la risoluzione di un problema in un applicazione dove IMHO probabilmente non è necessario.