Jeu de caractères et encodage pour une application WEB.
Par julien Calvet, lundi 27 novembre 2006 à 10:28 :: Technique :: #33 :: rss

Maîtriser l'encodage du début à la fin...
L'encodage d'une application WEB est un sujet relativement complexe et étendu, car il fait appel à différents paramétrages au niveau de la chaîne de production d'une application WEB. Cela fait appel aussi à différents intervenants, à savoir l'administrateur de la pate-forme d'hébergement, les développeurs de l'application WEB ainsi que l'utilisateur final. Nous allons à travers ce document décrire les différents points où l'encodage peut être réglé.
C'est le degré de réglage d'encodage le plus fort, si l'administarteur de la plate-forme décide de fixer un encodage par défaut (ex: UTF-8), tout le code hébergé par Apache va être délivré avec cette encodage.
Cette méthode peut convenir pour un hébergement dedié, elle devient au contratire beucoup plus difficille à maintenir pour un hébergement mutualisé. Dans le cas d'un hébergement mutualisé nous définirons la variable à off dans le fichier de configuration d'Apache ( AddDefaultCharset off).
C'est grâce à ce paramètre qu'on fixe un jeu de caratères par défaut ainsi qu'une collation associée à celui-ci. Il existe plusieurs collations pour un même jeu de caractères, la collation est utilisée pour les requêtes de recherche dans la base de données, cela correspond à un classement des caratères, l'encodage des caractères ne change pas, seul la hiérachie des caratères varie en fonction des différentes collations.
Si on créer une base de donnée standard, on utilise l'encodage UTF-8 ainsi qu'une collation utf8_unicode_ci, la requête pour créer cette base est CREATE DATABASE `nom_base` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;.
Si l'on souhaite initialiser une base de données avec un fichier de dump de base par exemple, il faut savoir en premier lieu sous quel encodage le dump de cette base est écrit, c'est primordial. Pour définir l'encodage du fichier *.sql on peut aplliquer la commande file qui nous donnera des informations sur ledit fichier. Lors de l'initialisation de la base de données on choisira bien le type d'encodage retourné par la commande file.
Mysql s'occupant de transformer les données dans le jeu de caractères correspondant à celui de la base de données.
- Le serveur Apache (administrateur de la plate-forme)
C'est le degré de réglage d'encodage le plus fort, si l'administarteur de la plate-forme décide de fixer un encodage par défaut (ex: UTF-8), tout le code hébergé par Apache va être délivré avec cette encodage.
Cette méthode peut convenir pour un hébergement dedié, elle devient au contratire beucoup plus difficille à maintenir pour un hébergement mutualisé. Dans le cas d'un hébergement mutualisé nous définirons la variable à off dans le fichier de configuration d'Apache ( AddDefaultCharset off).
- Le code source de l'application (les developpeurs de l'application)
- L'encodage du navigateur (l'utilisateur)
- La base de données (administrateur de la plate-forme ou les developpeurs de l'application)
C'est grâce à ce paramètre qu'on fixe un jeu de caratères par défaut ainsi qu'une collation associée à celui-ci. Il existe plusieurs collations pour un même jeu de caractères, la collation est utilisée pour les requêtes de recherche dans la base de données, cela correspond à un classement des caratères, l'encodage des caractères ne change pas, seul la hiérachie des caratères varie en fonction des différentes collations.
Si on créer une base de donnée standard, on utilise l'encodage UTF-8 ainsi qu'une collation utf8_unicode_ci, la requête pour créer cette base est CREATE DATABASE `nom_base` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;.
Si l'on souhaite initialiser une base de données avec un fichier de dump de base par exemple, il faut savoir en premier lieu sous quel encodage le dump de cette base est écrit, c'est primordial. Pour définir l'encodage du fichier *.sql on peut aplliquer la commande file qui nous donnera des informations sur ledit fichier. Lors de l'initialisation de la base de données on choisira bien le type d'encodage retourné par la commande file.
Mysql s'occupant de transformer les données dans le jeu de caractères correspondant à celui de la base de données.