Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    160

    Problema di conversione

    Tramite un csv ho popolato un database di locazioni geofrafiche (con colation latin).

    Il problema per esempio è che alcune città straniere mi vengono memorizzate in db, e successivamente mostrate via php, con caratteri assurdi del tipo Bükfürdõ.

    I csv erano codificati in utf8.

    Cosa devo fare, a livello db o php per vedere correttamente i caratteri sulle pagine web?

  2. #2
    Devi usare UTF-8 sia nel database (character set e collation) che nelle pagine PHP (indicare il meta tag Content-Type con charset=UTF-8 e - FONDAMENTALE - salvare il file con la codifica UTF-8 SENZA BOM). Latin1 è una codifica limitata e inutile quando devi creare pagine o applicazioni che contengono caratteri da tutto il mondo. Le stesse lettere accentate in italiano sono caratteri speciali. Invece di convertirle usando htmlentities() (che non ce la farebbe comunque a tradurre tutti i caratteri esistenti al mondo), è meglio abbandonare completamente la ISO-8859-1 e usare UTF-8. Tra l'altro l'uso di UTF-8 è sempre consigliato rispetto a qualsiasi altro set di caratteri poiché può rappresentare, SENZA convertirli in entità di carattere, centinaia di milioni di caratteri.

    Poi ti consiglio di cercare in rete (l'avevo letto tempo fa e non ricordo il sito) riguardo i problemi di importazione e le rispettive soluzioni quando usi UTF-8.

    PS: Attenzione! Quando imposti come set di caratteri e collation UTF-8, nel database le tue stringhe verranno memorizzate con i caratteri "strani". Questo è normale, perché dovresti impostare esplicitamente MySQL per usare nelle connessioni UTF-8 (il database continua ad usare Latin1 altrimenti). Quando però le tue pagine PHP (salvate in UTF-8) leggono i dati, li recuperano ovviamente correttamente. Impostare la connessione per l'uso di UTF-8, almeno in locale, ho visto che genera un problema con MySQL 5: se provi ad inserire una stringa manualmente da linea di comando (e penso anche da programma PHP) ti ritrovi con l'errore "data too long for NOMECAMPO". Questo penso sia dovuto proprio al problema della codifica. Quindi il mio consiglio è di lasciare la connessione impostata di default su Latin 1, ma di creare le tabelle e il database con UTF-8 (character set utf8, collation utf8_general_ci).

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    160
    Grazie per la spendida risposta, proverò al piu presto a seguire i tuoi consigli!

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.