Modifications entre les versions 1 et 2
Version 1 à la date du 2007-08-02 20:14:52
Taille: 1216
Éditeur: AliJawadJetha
Commentaire:
Version 2 à la date du 2007-08-06 18:47:04
Taille: 2563
Éditeur: AliJawadJetha
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 24: Ligne 24:
Paramètres mysql retournés lors d'une interrogation via phpmyadmin
Ligne 25: Ligne 26:
{{{
SHOW VARIABLES LIKE 'char%'

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
}}}

Paramètres mysql retournés lors d'une interrogation via php sur osti.auf

{{{
mysql_query ("SHOW VARIABLES LIKE 'char%'");

character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/


Encodage retourné par la fonction php mysql_client_encoding
latin1


}}}

Paramètres mysql retournés lors d'une interrogation via php sur intranet.auf

{{{

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/


Encodage retourné par la fonction php mysql_client_encoding
latin1
}}}

'''La fonction php mysql_client_encoding() retourne le charset par défaut de la librairie php de connection à mysql. Elle ne retourne pas le charset de la connection mysql active.'''

Encodage et applications php

Par défaut, le serveur apache de osti renvoit du UTF8. On peut modifier le comportement en définissant le charset dans les entetes.

header('Content-Type: text/html; charset=utf-8');

Si on écrit un "é" dans un script php, il faut que le fichier soit sauvegardé en utf8. Sinon, il faut utiliser la fonction utf_encode qui va traduire vers de l'utf8.

MYSQL

J'ignore le comportement par défaut mais j'ai observé deux choses:

  • Une table sur le serveur mysql gaia.auf dont les champs sont tous en utf8_general_ci renvoit un jeu de caractère en utf8 si il est appellé à partir de gaia et renvoit du iso (je suppose iso mais je sais que c'est pas du utf8) si il est appellé à partir de osti.auf. Le même comportement est observé sur le serveur mysql db.auf.

Donc un script écrit en ut8, avec des tables mysql en utf8 (sur db.auf ou gaia.auf), ne fonctionnera pas correctement sur osti qui est pourant entièrement configuré en utf8.

La solution:

Il suffit de forcer mysql à renvoyer du utf8.

Une simple requete mysql_query("SET NAMES 'utf8'"); après avoir effectué la connection suffit à rétablir l'ordre des choses.

Paramètres mysql retournés lors d'une interrogation via phpmyadmin

SHOW VARIABLES LIKE 'char%'

character_set_client    utf8
character_set_connection        utf8
character_set_database  utf8
character_set_results   utf8
character_set_server    utf8
character_set_system    utf8
character_sets_dir      /usr/share/mysql/charsets/

Paramètres mysql retournés lors d'une interrogation via php sur osti.auf

mysql_query ("SHOW VARIABLES LIKE 'char%'");

character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/


Encodage retourné par la fonction php mysql_client_encoding
latin1

Paramètres mysql retournés lors d'une interrogation via php sur intranet.auf

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/


Encodage retourné par la fonction php mysql_client_encoding
latin1

La fonction php mysql_client_encoding() retourne le charset par défaut de la librairie php de connection à mysql. Elle ne retourne pas le charset de la connection mysql active.

AliJawadJetha/notes/encodage (dernière édition le 2008-02-21 22:09:21 par localhost)