Gestion de l’encodage, des caractères accentués
Introduction
Afin de pouvoir gérer correctement le stockage, la récupération et l’affichage de caractères accentués ou autres kanjis, il est important d’avoir un bon encodage sur l’ensemble des supports de notre site ; sous peine de se retrouver avec des caractères mal gérés ��� ^^’
Pour cela, il y a 3 points clés :
Base de données
Doit être géré à deux endroits :
- Lors de la création de la base de données, il faut bien spécifier l’ Interclassement en tant que utf16_general_ci dans la liste déroulante (vous pouvez sélectionner la liste et taper « utf » pour y naviguer plus rapidement).
- Egalement lors de l’ajout des données, attention à ajouter du contenu directement bien encodé (notamment lors de l’ajout via PHP)
En cas de BDD mal créée, vous pouvez toujours aller sur cette dernière (via phpMyAdmin) et aller dans l’onglet Opérations afin d’y changer l’encodage de tous les champs concernés. Penez à vérifier de visu ( Une table > Afficher ) qu’il n’y a pas eu de problèmes lors de cette opération.
Lors de la connexion à la bdd
Lors de la création de votre PDO dans le fichier php/_connexion.php, pensez à spécifier votre encodage.
Trois possibilités :
- soit en l’ajoutant après la déclaration de la base de données,
- new PDO(‘mysql:host=’ . $host . ‘;dbname=’. $dbname . ‘;charset=UTF8‘ . , $user, $pass);
- soit le spécifiant dans le 4eme attribut de la création du PDO
- $db = new PDO(‘mysql:host=myhost;dbname=mydb’, ‘login’, ‘password’, array(PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES \’UTF8\ »));
- cf. commentaires dans la doc officielle.
- soit en utilisant $pdo->exec une fois ce dernier créé
- $pdo->exec(« SET NAMES ‘utf8′; »);
Je recommande l’utilisation de la troisième méthode, parce que.
Ce qui, une fois l’ensemble de la doc et des bonnes pratiques compilées, devrait donner un fichier de ce genre :
(WordPress bloque l’ajout de .php, il sera à renommmer de .txt en .php )
Encodage des fichiers
Problème moins récurrent ces dernières années mais qui peux parfois être la source d’un mauvais encodage : vos fichiers en eux même. Il faut qu’ils soient encodés en utf-8 avec BOM.
Afin de le vérifier, vous pouvez modifier vos préférences d’éditeur de texte (par exemple avec Sublim text 3 ).
Pour le changer manuellement :
Dans vos fichier même > Fichier > Sauvegarder avec l’encodage > UTF16 With BOM
Tags: base, base de données, bdd, bonnes, caractères, charset, clean, connexion, connxion, données, encodage, interclassement, interrogation, pdo, point, pratiques, problème, utf16, utf32, utf8
Commentaires récents