Problème d'encodage MySQL 4.0 -> MySQL 4.1

1 message   •   Page 1 sur 1
Mammouth du PHP | 1885 Messages

25 nov. 2005, 02:16

Si vous voyez affichés à l'écran des caractères étranges tel "é" en lieu et place du caractère "é", il s'agit d'un problème d'encodage.

MySQL 4.0 ne supporte pas la configuration des encodages et possède donc pas défaut un encodage latin, soit "iso-8859-1". Il s'agit de l'encodage par défaut sur la plupart des sites internet et bases de données. Il permet le support des caractères accentués et est encodé sur un seul octet.

MySQL 4.1 supporte la configuration des encodages. Cela signifie qu'il est possible de modifier l'encodage par défaut, et qu'un encodage multi-octets est possible.

Un problème d'encodage peut se présenter lorsque vous importez des données de MySQL 4.1 vers MySQL 4.0. Il y a problème lorsque l'encodage de vos tables contenues sur MySQL 4.1 est de type "utf8_*". Les caractères sont encodés sur 2 octets contrairement à un encodage latin (iso-8859-1). Ainsi le caractère "é" qui est encodé sur 2 octets avec MySQL 4.1 se verra afficher, sous MySQL 4.0, chacun de ses 2 octets dans lequel il a été encodé, soit "é".

Ce problème se présente également lors de l'importation de données de MySQL 4.0 vers MySQL 4.1, il est important d'utiliser le même encodage pour la table de destination. Un encodage de type latin (latin1_swedish_ci) est donc recommandé afin d'avoir un encodage sur un seul octet.

De plus, si vous utilisez un encodage multi-octet sur MySQL 4.1, il est important de régler l'encodage d'affichage de votre page web sur le même que celui utilisé dans votre base de données. Sinon la page ne sera pas configurée pour afficher la page en UTF-8, alors prendra les 2 octets nécessaires à l'affichage du "é" séparément, affichant ainsi "é". Une mauvaise configuration du client ou des entêtes créera toujours ce genre de "problèmes".

Ce message ne se veut pas une explication très détaillée du sujet. Cependant il résume bien les problèmes que vous pourrez rencontrer lors de la mise à jour vers MySQL 4.1 ou lors des importations de données à encodage multi-octets.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

1 message   •   Page 1 sur 1