Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    dati prelevati da mysql con charset utf-8

    Ciao a tutti!

    volevo sottoporvi una questione che ritengo abbastanza interessante

    Da un po' creo per comodità (supporto multilingua) tutti i miei siti con utf-8.
    Cioè mando in output tutto tramite l'handler del modulo multibyte string.
    Per farla semplice così

    codice:
    mb_http_output("UTF-8");
    ob_start("mb_output_handler");
    Naturalmente dichiaro utf-8 anche per l'xml e con il tag meta sull'XHTML.

    Tutto funziona molto bene.

    Essendo le pagine impostate in utf-8 i form mi vengono restituiti dai browser con la stessa codifica e per restare in tema il charset che imposto su mysql è un bel utf8-general-ci.

    Dov'è l'inghippo?

    Semplice ma fastidioso.
    Quando prelevo dati da mysql mi vengono restituiti (giustamente) in utf-8.
    Questo normalmente non sarebbe un problema se non fosse che l'mb_output_handler (ma anche utf8_encode o mb_convert_encoding) se ne fregano se ricevono dell'utf-8 e lo codificano di nuovo..

    Risultato?

    Ogni volta che prelevo stringhe utf-8 dal database e le devo mandare in output sono costretto a ridurre l'utf-8 nuovamente in iso-8859-* prima di fare un echo.
    Questa è la via più "comoda" che ho trovato ma presenta anche delle insidie perchè se si riduce per esempio il simbolo dell'euro da utf-8 a iso-8859-1 (come fa per esempio utf8_decode) viene sostituito con un bel punto di domanda poiche in iso-8859-1 il simbolo dell'euro non è previsto.
    Questo naturalmente è solo un esempio.. se riducendo l'utf8 in iso-8859-15 (con mb_convert) si risolve il problema del simbolo euro non si risolve purtroppo il guaio con il cirillico o il cinese.

    E' possibile che l'unica via sia interrompere il buffering ad ogni output già codificato in utf8!?
    E' assurdo!!

    Maledizione a php che ancora non supporta nativamente utf8
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  2. #2
    Nessuno che mi tende una hand?

    Non vorrete farmi illudere di essere sull'apice della montagna...
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  3. #3
    Forse sono un po' in ritardo:

    nella pagina di visualizzazione aggiungi il <META http-equiv="Content-Type" content="text/html; charset=UTF-8">


    Per la memorizzazione dei dati nel database prova a seguire le seguenti istruzioni:

    Sostanzialmente sui server MySQL di sistemi di hosting italiani (ma credo anche americani) e comunque in generale, l’impostazione del default_character_set è impostata a latin1.
    Ma anche qualora sia impostata ad utf8 quando via script PHP ci connettiamo al database MySQL la nostra sessione di default (nonostante la pagina sia encodata utf8) sarà attivata con character set latin1, cosa succede quindi, che i dati e le query che inviamo sfasano e il sistema memorizza erroneamente i dati.

    Di fatto il comportamento giusto lo ha PMA, dobbiamo cercare quindi di emularlo.
    Per farlo basta di fatto lanciare dopo ogni connessione la seguente query: SET NAMES utf8
    Così facendo la connessione tra client e server sarà UTF8.
    tratto da: http://www.massimo-caselli.com/2006/...ratteri-mysql/
    è meglio tacere e far credere di essere stupido piuttosto che parlare e togliere ogni dubbio

  4. #4
    Ti ringrazio ma avevo già settato la codifica.
    Il problema era relativo all'handler di mbstring che utilizzavo per codificare in utf-8 tutto il buffer ob.
    Stavo cercando una soluzione efficiente per risolvere il problema della doppia codifica (o ricodifica) visto che i dati provenienti dal db erano già utf-8.
    Ho risolto salvando direttamente in utf-8 le mie pagine php così non c'è bisogno dell'handler per la codifica (le stringhe sulla pagina sono già utf8) e basta andare in output tranquillamente con i dati del db (anche loro già utf-8)

    Grazie comunque per l'aiuto
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  5. #5
    e come fai a salvare le pagine php direttamente in utf-8?
    è meglio tacere e far credere di essere stupido piuttosto che parlare e togliere ogni dubbio

  6. #6
    dipende dall'editor... non tutti gli editor lo consentono.. alcuni poi gestiscono male la cosa e creano confusione. Io per sviluppare uso Kate con cui mi trovo benissimo e non ho alcun problema.

    strumenti->codifica->unicode (utf-8) ed il gioco è fatto
    Alla riapertura Kate individua la codifica e tutto funziona alla perfezione.
    Posso usare qualsiasi carattere.. anche cinesi, uruguaiani, arabi... tutto funziona perfettamente, senza bisogno di usare le html entities che aumentano il peso della pagina e sono scomode.

    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.