Visualizzazione risultati 1 fino 9 di 9

Discussione: htmlentities traduce i caratteri sbagliati

  1. #1
    Guest

    Predefinito htmlentities traduce i caratteri sbagliati

    Premetto che quello che segue riguarda il mio server locale (Apache 2.2.3, PHP 5.2.0).

    Ho avuto dei problemi con le lettere accentate in un form, e ho quindi deciso di utilizzare htmlentities() per tradurle nelle entità html corrette (come è ò ecc) ma con mia grande sorpresa ho constatato che non funziona, perché traduce "àèìòù" in "àèìÃ& sup2;ù", che naturalmente FireFox visualizza come "à èìòù".

    Come posso risolvere il problema?

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Potresti crearti una funzione dove metterai i vari str_replace per le varie entità.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Ci avevo pensato ma ho il dubbio che abbia problemi di charset a sua volta, o no?

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    In teoria non ne dovrebbe avere.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Se si comporta così è abbastanza evidente che nel momento in cui utilizzi la funzione htmlentities() è "troppo tardi"... ovvero già sono state "storpiate" o interpretate con il charset diverso da quello del form.
    anche se non hai specificato, parlando di form, deduco che si tratti del valori inseriti nelle caselle di testo no?
    E' possibile avere il codice COMPLETO dei due script? (o se è uno script solo che si invia i dati da solo meglio ancora)
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Probabilmente utilizzi una funzione come utf8_encode quando inserisci i dati nel database e non utilizzi la funzione utf8_decode quando li stampi.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    E' possibile avere il codice COMPLETO dei due script? (o se è uno script solo che si invia i dati da solo meglio ancora)
    Postarlo qui è un problema, lo puoi ottenere cliccando su TNTforum nella mia firma, è il forum intero... Comunque ho rilevato il problema sia nel testo dei post (memorizzato da mod_newopic.php e mod_post.php, visualizzato da mod_viewtopic.php) e nel titolo dei topic (memorizzato da mod_viewtopic.php e visualizzato in index.php, mod_guarda.php e mod_viewtopic.php)
    Citazione Originalmente inviato da funcool
    Probabilmente utilizzi una funzione come utf8_encode quando inserisci i dati nel database e non utilizzi la funzione utf8_decode quando li stampi.
    No, non utilizzo niente di simile.

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Prima che mi scordo: quando nel tntforum dai la pagina d'errore (se per es. non si ha il permesso per postare) nel link/tasto per tornare indietro c'è scritto male javascript: ovvero appare javascritp:
    Questo probabilmente non viene rilevato da IE ma su ff ti blocca e dà errore.

    Comunque
    per quel che riguarda le accentate:
    "à èìòù"
    sono senza dubbio (se finora ce ne fosse stato) l'espressione UTF-8 di quei caratteri accentati, lo si nota dalla famigerata coppia di byte -usata per caratteri particolari- vista in testo semplice, e fin qui ok. Potresti ottenere un "pork-around" (risolvi molto pecorecciamente) applicando a quei caratterazzi la funzione uft_decode sopracitata da funcool. A questo punto riottieni le accentate e DOPO -ora sì- sarebbe il momento giusto per applicarvi ulteriormente l'htmlentities().

    Ma di certo non lo consiglio, consiglio invece di esaminare bene i passi che intercorrono prima di arrivare al punto in cui ti trovi sti caratterazzi.

    Ad ogni modo ho postato un messaggio (cancellalo) sul forum del tuo sito e i caratteri accentati io li vedo bene... ma vabè che parlavi della tua situazione dell'apache locale.. che dire..
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    Guest

    Predefinito

    Grazie per la segnalazione del javascritp, ho corretto (in locale), comunque IE non l'ha neanche mai visto il forum, è confinato nella partizione di Windows a prendere polvere

    Comunque avevate ragione, applicando utf8_decode() va tutto a posto, strano.
    Potrebbe forse essere che l'encoding della pagina è proprio utf8? Cioè, io lancio un header che specifica utf8 come charset, potrebbe essere quello?

    il codice di mod_post.php (che viene inclusa da index.php, che comunque non tocca le variabili POST) è questo: http://tuttoeniente2.altervista.org/.../mod_post.html

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •