• User Newbie

    PHP: Problema legatura caratteri (per es fi)

    Ho un semplice modulo creato in PHP per l'inserimento di testo (utilizzo tiny mce come editor).
    Mi è capitato di copiare del testo da Word ed incollarlo nella textarea e qui ho riscontrato il problema:
    Word fa uso di caratteri di legatura cioè interpreta alcuni caratteri come uno unico.

    Un esempio sono le due lettere " fi " che vengono viste come un'unica lettera del tipo
    h t t p :// it.wikipedia.org/wiki/Legatura_(tipografia)

    Ho provato anche a copiare il testo da Word, incollarlo su notepad e reincollarlo poi sull'editor sperando che il blocco note ripulisse un po' la porcheria, ma niente.. anche lui mantiene la legatura.

    Una volta inviato il modulo per salvare poi il testo su db MySQL, il carattere di legatura viene tradotto in punto interrogativo con conseguenze non piacevoli..

    Ho cercato su internet ma non ho trovato info su come risolvere questo mio problema...

    Riporto di seguito i dati di codifica di MySQL:

    mysql Ver 14.12 Distrib 5.0.22, for redhat-linux-gnu (i686) using readline 5.0

    SSL: Not in use

    Server version: 5.0.22

    Connection: Localhost via UNIX socket

    Server characterset: latin1

    Db characterset: latin1

    Client characterset: latin1

    Conn. characterset: latin1

    UNIX socket: /var/lib/mysql/mysql.sock


    Intanto ringrazio anticipatamente


  • ModSenior

    dipende dai charset... prima inviare tramite query pasa il testo nella funzione htmlentities che ti converte i caratteri.....


  • User Newbie

    Chiedo scusa se rispondo solamente ora a distanza di tempo dal consiglio.

    Infatti, sono riuscito a risolvere finalmente il problema!

    La soluzione è quella consigliata da Thedarkita cioè l'utilizzo della funzione htmlentities.

    Prima di memorizzare sul database i dati inviati tramite il POST della form ho eseguito semplicemente

    $testo = htmlentities($testo);

    Per l'anteprima del testo sul sito e per l'invio vero e proprio ho semplicemente riconvertito il tutto usando

    $testo = html_entity_decode($testo);

    e sembra funzionare proprio come volevo!! 😄

    Grazie per l'auito,
    spero questo post possa, prima o poi, tornare utile a chi, come me, si è imbattuto nelle legature dei caratteri.

    Grazie