Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment gérer correctement les caractères internationaux en PHP/MySQL/Apache

Apache

Le codage du serveur doit être soit non défini, soit défini sur UTF-8. Cela se fait via la directive apache AddDefaultCharset. Cela peut aller au virtualhost ou au fichier général (voir documentation).

AddDefaultCharset utf-8

MySql

  • Définissez le classement de la base de données sur UTF-8
  • Définir l'encodage de connexion. Cela peut être fait comme quelqu'un l'a dit avec mysqli_set_charset, ou en envoyant ceci juste après la connexion :
    SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'

PHP

1- Vous devez définir le jeu de caractères HTML de la page en UTF-8, via une balise méta sur la page ou via un en-tête PHP :

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

2- Vous devez toujours utiliser la version mb* des fonctions liées aux chaînes, par exemple, mbstrlen au lieu de strlen pour obtenir la longueur de chaîne d'une chaîne.

Cela devrait vous permettre d'avoir UTF-8 partout, des pages aux données. Un test que vous pouvez faire :faites un clic droit n'importe où sur la page en utilisant firefox, et sélectionnez Afficher les informations de la page. L'encodage effectif est répertorié dans cette page.