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

Come visualizzare i caratteri UTF-8 in phpMyAdmin?

Sfortunatamente, phpMyAdmin è una delle prime applicazioni php che parla correttamente con MySQL di charset. Il tuo problema è molto probabilmente dovuto al fatto che il database non memorizza le stringhe UTF-8 corrette in primo luogo.

Per visualizzare correttamente i caratteri in phpMyAdmin, i dati devono essere correttamente memorizzati nel database. Tuttavia, convertire il database nel set di caratteri corretto spesso interrompe le app Web che non sono a conoscenza della funzionalità relativa al set di caratteri fornita da MySQL.

Posso chiedere:MySQL è> versione 4.1? A quale web app è destinato il database? phpBB? Il database è stato migrato da una versione precedente dell'app Web o da una versione precedente di MySQL?

Il mio consiglio è di non fratello se l'app web che stai utilizzando è troppo vecchia e non supportata. Converti il ​​database in UTF-8 reale solo se sei sicuro che l'app Web possa leggerli correttamente.

Modifica:

Il tuo MySQL è> 4.1, ciò significa che è charset-aware. Quali sono le impostazioni di confronto dei set di caratteri per il tuo database? Sono abbastanza sicuro che stai usando latin1 , che è il nome MySQL per ASCII, per memorizzare il testo UTF-8 in "byte", nel database.

Per i client insensibili al set di caratteri (ad es. mysql-cli e php-mod-mysql), i caratteri vengono visualizzati correttamente poiché vengono trasferiti al/dal database come byte. In phpMyAdmin, i byte vengono letti e visualizzati come caratteri ASCII, questo è il testo spazzatura che sembri.

Innumerevoli ore erano state trascorse anni fa (2005?) quando MySQL 4.0 è diventato obsoleto, in molte parti dell'Asia. Esiste un modo standard per gestire il tuo problema e i dati inghiottiti:

  1. Esegui il backup del database come .sql
  2. Aprilo nell'editor di testo compatibile con UTF-8, assicurati che abbiano un aspetto corretto.
  3. Cerca charset collation latin1_general_ci , sostituisci latin1 a utf8 .
  4. Salva come nuovo file sql, non sovrascrivere il backup
  5. Importa il nuovo file, ora apparirà correttamente in phpMyAdmin e il giapponese sulla tua app web diventerà punti interrogativi. È normale.
  6. Per la tua app Web php che si basa su php-mod-mysql, inserisci mysql_query("SET NAMES UTF8"); dopo mysql_connect() , ora i punti interrogativi saranno spariti.
  7. Aggiungi la seguente configurazione my.ini per mysql-cli:

    # CLIENT SECTION
    [mysql]
    default-character-set=utf8
    # SERVER SECTION
    [mysqld]
    default-character-set=utf8
    

Per ulteriori informazioni su charset su MySQL, fare riferimento al manuale: http://dev.mysql.com/doc/refman/5.0/en/charset-server.html

Nota che presumo che la tua app web stia usando php-mod-mysql per connettersi al database (da qui il mysql_connect() funzione), poiché php-mod-mysql è l'unica estensione che mi viene in mente che ancora attiva il problema FINO A QUESTO GIORNO.

phpMyAdmin usa php-mod-mysqli per connettersi a MySQL. Non ho mai imparato a usarlo perché sono passato ai framework* per sviluppare i miei progetti php. Incoraggio vivamente a farlo anche tu.

  • Molti framework, ad es. CodeIgniter, Zend, usa mysqli o pdo per connettersi ai database. le funzioni mod-mysql sono considerate obsolete causano problemi di prestazioni e scalabilità. Inoltre, non vuoi collegare il tuo progetto a un tipo specifico di database.