Mysql
 sql >> Database >  >> RDS >> Mysql

Come gestire correttamente il carattere internazionale in PHP / MySQL / Apache

Apache

La codifica del server deve essere non impostata o impostata su UTF-8. Questo viene fatto tramite la direttiva apache AddDefaultCharset. Questo può andare al virtualhost o al file generale (vedi documentazione).

AddDefaultCharset utf-8

MySql

  • Imposta le regole di confronto del database su UTF-8
  • Imposta la codifica della connessione. Può essere fatto come qualcuno ha detto con mysqli_set_charset, o inviando questo subito dopo la connessione:
    SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'

PHP

1- Dovresti impostare il charset HTML della pagina in modo che sia UTF-8, tramite un meta tag sulla pagina o tramite un'intestazione PHP:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-or-
    header('Content-type: text/html; charset=utf-8');

2- Dovresti sempre usare la versione mb* delle funzioni relative alle stringhe, ad esempio mbstrlen invece di strlen per ottenere la lunghezza della stringa di una stringa.

Questo dovrebbe permetterti di avere UTF-8 ovunque, dalle pagine ai dati. Un test che puoi eseguire:fai clic con il pulsante destro del mouse in un punto qualsiasi della pagina utilizzando Firefox e seleziona Mostra informazioni sulla pagina. La codifica effettiva è elencata in quella pagina.