• User Newbie

    un chiarimento finale su UTF-8 :: confusione o verità

    Ciao a tutti...
    finalmente dopo aver letto e riletto i post qui sul forum (che mi sono stati utilissimi!!!) ho sistemato il mio db:

    1. Mysql in utf8
    2. tabelle in utf8
    3. pagine con header UTF-8

    Funziona tutto alla grande... :quote: sia i dati inseriti nel DB da client php e poi prelevati e visualizzati sulla pagina tutto corretto accentate comprese, sia per il testo scritto sulla pagina html senza entities, ma ho la paura che magari qualche carattere in qualche browser non si legga correttamente.. può accadere davvero? :bho:

    In base a ciò che ho letto qui sul FORUM alla fine mi sono confuso un pò:
    c'e' sempre qualcuno che dice di no, e qualcuno invece di usare le entities anche se la pagina è UTF per codificare le accentate e caratteri speciali come

    [php] ° & ? è à é ì ò ù[/php] E' davvero necessario o se tutto è davvero conforme UTF va sicuro e tranq?
    Del resto se scrivo nel DB in UTF non posso codificare le accentate con htmlentities() altrimenti mi sballa tutto quando prelevo da DB e la pagina UTF cerca di visualizzare il contenuto sbagliando! Giusto? :mmm:

    Dovrei forse creare una funzione che mi recuperi i dati dal DB e con un replace e cambiare almeno le accentate in visualizzazione.... ma è davvero necessario? :():

    E poi... se per questione di sicurezza codifico i caratteri speciali pericolosi come apici, virgolette, ecc.. con
    [php]$var = htmlspecialchars($var , ENT_QUOTES);[/php]è utile o superfluo aggiungere scrivendo i dati nel DB
    [php]mysql_real_escape_string[/php]visto che appunto apici e virglolette risultano convertiti ... come da esempio:

    se scrivo nel DB attraverso un client php appositamente creato: WEEK-END D'INVERNO ....... diventerà > WEEK-END D\'INVERNO
    ```quindi .. forse è superfluo aggiungere anche il \ ...:?
    
    
    Aggiungo infine che, facendo un giro sul web, per esempio sul sito ADOBE...
       Tutto in UTF8 ma usano le entities per le accentate ... come mai se in teoria tutto è settato bene? :?
       
       IDEM per il sito APPLE ... UTF8 ma con le accentate convertite in entities...
       
       Da qui i dubbi su questa cosa... 
       Quindi, anche se ho tutto corretto, e in visualizzazione non vedo errori, dovrei davvero convertire i dati in lettura con le entities html corrispondenti? 
       
       Meglio metterle su DB o convertirle solo in lettura e lasciare su DB UTF8 puro?
       
       Dubbi su dubbi! :x
       
       Grz a tutti.. e a chi partecipa al post!

  • User

    Se hai fatto in modo che il testo sia veramente TUTTO codificato in UTF8, non hai problemi con nessun browser.

    Per quanto riguarda la funzione
    [PHP]mysql_real_escape_string [/PHP]
    SERVE SEMPRE quando si fa un'inserzione in un campo formato stringa (varchar, text ecc) nel database, in quanto questa ti protegge da possibili SQL Injection.

    :ciauz: