UTF-8 (UCS transformation format 8 bits) est un format de codage de caractères défini pour tous les points de code ayant une valeur scalaire (qu’ils soient attribués ou non à des caractères ou des « non-caractères ») dans le répertoire universel (Universal Character Set, ou UCS), commun à la norme ISO/CEI 10646 et au standard Unicode (depuis sa version 1.1). Chaque point de code est codé sur une suite d’un à quatre octets. Il a été conçu pour être compatible avec certains logiciels originellement prévus pour traiter des caractères d’un seul octet.
Voir sur wikipedia Voici toutes les manipulations idéal afin de garantir un bon passage en utf-8
Première étape le site
Nous allons forcer l'affichage en UTF-8 à l'aide d'un fichier .htaccess, en racine du site créer le s'il n'est pas présent et enregistrer cette instruction :
-
AddDefaultCharset UTF-8
Au tour des pages, dans l'entête de chacune d'elle, incluez dans la section cette instruction :
-
[meta content="text/html; charset=UTF-8" http-equiv="content-type" /]
Voila une bonne chose de faites, cependant il nous reste mysql....
Deuxième étape la base de donnée
La base de donnée est aussi à mettre en utf-8 ! Attention chez mysql le "-" est absent et ça se prononce utf8
Pour créer une table en utf-8 il faut utiliser ce genre de procédure :
-
CREATE TABLE nouvelletable (titre VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, message TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ) CHARACTER SET utf8;
Mais que ce passe t'il ? Il utilise utf8_bin et utf8_general_ci ! En réalité les deux sont bien utf-8 cependant utf8_bin est sensible à la casse lors des comparaison tandis que utf8_general_ci est insensible à la casse ! Pour basculer une base existante en utf-8, vous pouvez utiliser cette instruction Attention dans certain cas les accents sont mal interprétés
-
ALTER DATABASE ma_table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Mais la manière la plus sure reste l'exportation dans votre encodage et la ré importation en basculant l'encodage en utf-8
Maintenant il faut que la communication entre le site et la base de donnée se fasse en utf-8, pour assurer une telle communication, il suffit d'ajouter une instruction sous votre requête de connexion à mysql :
- $sql = mysql_connect("localhost", "identifiant", "mot_de_passe")or die("Impossible de se connecter : " . mysql_error());
-
mysql_select_db("mabdd",$sql);
-
mysql_query('SET NAMES utf8');
Et voila vous pouvez dès à présent vous amusez avec UTF-8