[Apache/PHP] PB encodage
[Apache/PHP] PB encodage
Bonjour,
Je pense avoir un pb d'encodage dans une appli PHP sur mon serveur Web.
J'aimerais mettre un "AddDefaultCharset ISO5589-15" quelquepart dans la conf Apache, mais je sais pas où (je suis habitué à la conf ubuntu et là, ça passe pas).
Merci pour le coup de main.
++
Je pense avoir un pb d'encodage dans une appli PHP sur mon serveur Web.
J'aimerais mettre un "AddDefaultCharset ISO5589-15" quelquepart dans la conf Apache, mais je sais pas où (je suis habitué à la conf ubuntu et là, ça passe pas).
Merci pour le coup de main.
++
Macbook Pro 13 pouces (modèle 5,5 de juin 2009) - sous ArchLinux depuis l'install 2009.08
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
- benjarobin
- Maître du Kyudo
- Messages : 17237
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Apache/PHP] PB encodage (nouveau)
C'est une très mauvaise idée de resoudre un problème d'encodage par la conf de Apache, qui rajoute dans l'header une ligne. Surtout que si la page en elle même dit le contraire.
Il faut respecter un minimum les normes du W3C dans les pages web, il faut ajouter entre les balise head:
Sinon si tu veux vraiment modifier la configuration de apache, il n'y pas de différence avec Ubuntu... C'est juste la location qui est un peu différente.
Il faut respecter un minimum les normes du W3C dans les pages web, il faut ajouter entre les balise head:
Code : Tout sélectionner
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
/etc/httpd/conf/httpd.conf
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Apache/PHP] PB encodage (nouveau)
Salut benjarobin !
La balise head, c'est déjà fait
C'est le code PHP qui envoi un coup de l'utf-8, un coup du iso-8859-15.
Et arf, c'est pas mieux avec la conf dans le fichier que tu indiques.
Doit bien y avoir une diff de conf entre mon apache/php ubuntu et mon apache/php archlinux car l'appli s'affiche bien sous ubuntu et pas bien sous archlinux.
Y a pas une commande magique qui me permettrait de faire un diff de conf entre les deux ?
++
La balise head, c'est déjà fait
C'est le code PHP qui envoi un coup de l'utf-8, un coup du iso-8859-15.
Et arf, c'est pas mieux avec la conf dans le fichier que tu indiques.
Doit bien y avoir une diff de conf entre mon apache/php ubuntu et mon apache/php archlinux car l'appli s'affiche bien sous ubuntu et pas bien sous archlinux.
Y a pas une commande magique qui me permettrait de faire un diff de conf entre les deux ?
++
Macbook Pro 13 pouces (modèle 5,5 de juin 2009) - sous ArchLinux depuis l'install 2009.08
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
- benjarobin
- Maître du Kyudo
- Messages : 17237
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Apache/PHP] PB encodage (nouveau)
Comprend pas, je répète on ne devrai surtout pas toucher a la conf de apache.... A pars pour des cas très spécial. Donc pastebin le code source de ta page web ou ouvre ton site a l'extérieur, envoie un MP avec l'IP, ou rejoint moi sur IRC.
Sinon suffit de rajouter cette ligne entre et
Et tu sur de ne pas avoir éditer tes fichiers ? Et accidentellement modifié l'encodage du fichier.
Sinon suffit de rajouter cette ligne
Code : Tout sélectionner
AddDefaultCharset ISO-8859-15
Code : Tout sélectionner
<Directory "/location_de_ton_site_web">
Code : Tout sélectionner
</Directory>
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Apache/PHP] PB encodage (nouveau)
Arg, je n'y arrive pas.
Je n'ai pas édité les fichiers PHP (au pire, j'ai cvs qui tourne dessus, j'aurais vu les diff).
Après avoir lu ça, je me demande si ça viendrait pas de MySQL :
http://archlinux.fr/news/php-5-3-dans-extra
++
Je n'ai pas édité les fichiers PHP (au pire, j'ai cvs qui tourne dessus, j'aurais vu les diff).
Après avoir lu ça, je me demande si ça viendrait pas de MySQL :
http://archlinux.fr/news/php-5-3-dans-extra
++
Macbook Pro 13 pouces (modèle 5,5 de juin 2009) - sous ArchLinux depuis l'install 2009.08
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Re: [Apache/PHP] PB encodage (nouveau)
Je pense que je tiens une bonne piste...
Voici les réglages MySQL sous Archlinux :
Voici les réglages MySQL sous Ubuntu :
Je tente une modification de ces variables et je reviens ici.
++
Voici les réglages MySQL sous Archlinux :
Code : Tout sélectionner
SHOW VARIABLES LIKE '%character%'
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Voici les réglages MySQL sous Ubuntu :
Code : Tout sélectionner
SHOW VARIABLES LIKE '%character%'
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
++
Macbook Pro 13 pouces (modèle 5,5 de juin 2009) - sous ArchLinux depuis l'install 2009.08
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Re: [Apache/PHP] PB encodage (nouveau)
J'ai pu faire les modifications grâce à ces commandes MySQL :
Mais au reboot de MySQL, tout disparait
Code : Tout sélectionner
SET character_set_server = latin1;
SET character_set_database = latin1;
Macbook Pro 13 pouces (modèle 5,5 de juin 2009) - sous ArchLinux depuis l'install 2009.08
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
- benjarobin
- Maître du Kyudo
- Messages : 17237
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Apache/PHP] PB encodage (nouveau)
Et tu sur que cela peut venir de mysql... Tu es sur que tu veux pas venir sur IRC ?
Que donne une page statique généré en PHP sans utilisé la BD mais avec des accents.
Si tu pense que cela vient de mysql, il y a un fichier de conf /etc/mysql/my.conf Sinon lorsque le PHP ouvre la connexion a la BD tu peux spécifier l'encodage par défaut.
Que donne une page statique généré en PHP sans utilisé la BD mais avec des accents.
Si tu pense que cela vient de mysql, il y a un fichier de conf /etc/mysql/my.conf Sinon lorsque le PHP ouvre la connexion a la BD tu peux spécifier l'encodage par défaut.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Apache/PHP] PB encodage (nouveau)
Moi je peux confirmer pour avoir déjà eu ce problème, cela peut provenir de mysql
Regarde du coté de http://www.php.net/manual/fr/function.m ... harset.php, sinon il me semble qu'il faut modifier l'option character_set_client et character_set_server du coté de mysql.conf
Tu trouveras plus d'information sur le character set des requêtes mysql sur un serveur ici: http://www.php.net/manual/fr/function.m ... harset.php
Enfin pour éviter les soucis, je te conseille de faire du full UTF8
@Benjarobin: si tu ne modifie pas les headers dans le fichier de apache, tu fais comment pour une application configuré en UTF8 dans php.ini pour avoir le Content-encoding: UTF-8 dans tes headers?
Append / prépend de apache?
Regarde du coté de http://www.php.net/manual/fr/function.m ... harset.php, sinon il me semble qu'il faut modifier l'option character_set_client et character_set_server du coté de mysql.conf
Tu trouveras plus d'information sur le character set des requêtes mysql sur un serveur ici: http://www.php.net/manual/fr/function.m ... harset.php
Enfin pour éviter les soucis, je te conseille de faire du full UTF8
@Benjarobin: si tu ne modifie pas les headers dans le fichier de apache, tu fais comment pour une application configuré en UTF8 dans php.ini pour avoir le Content-encoding: UTF-8 dans tes headers?
Append / prépend de apache?
- benjarobin
- Maître du Kyudo
- Messages : 17237
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [Apache/PHP] PB encodage (nouveau)
Bon je retire tout ce que j'ai dis... En effet apache si on envoie pas manuellement sous archlinux l'header de l'encoding
Bon résumer de mes expériences.
Donc en gros si dans le header de la requête on spécifie le charset Firefox va le privilégier.
Si tu as default_charset différent de vide dans php.ini ou dans le code php, cherche pas plus loin c'est la ou est le problème. Cela aiderai beaucoup que l'on est accès même temporairement au serveur.
Sinon installe cette extension de firefox : LiveHTTPHeaders et donne une copie d'un header de retour...
Sinon un autre test pour exclure les problème de database, creer ce fichier test.php copie bien dans le bon encodage, je crois que tu es sous KDE, donc ouvre Kwrite, Outil -> encodage -> europe...
Et donne nous le résultat de l'header avec l'extension firefox et si la page s'affiche bien...
@vgib Comme tu peux le voir si on configure bien php.ini (c'est les valeurs par défauts) Donc par défaut le charset est vide (c'est au navigateur web de deviner), tu ne devrai pas avoir besoin de spécifier quoi que ce soit dans les headers. Donne moi un seul exemple ou tu le devrai. L'encodage c'est la page web qui doit le fournir... Bien sur il faut respecter un minimum les règles du W3C...
Résumer dans les headers si vous voulez pouvoir gérer facilement différent charset On ne doit pas avoir "charset=UTF-8" dans le Content-encoding... IE le supporte très bien... (une chose qu'il supporte)
il rajoute par lui même ceci si on a l'option non vide de default_charset dans php.iniContent-Type: text/html; charset=ISO-8859-1
Ce qui n'est pas terrible...Content-Type: text/html; charset=utf-8
Bon résumer de mes expériences.
Code : Tout sélectionner
Header request Dans balise head Encodage de la page web Ouput Comment
UTF-8 UTF-8 UTF-8 é --
UTF-8 ISO-8859-1 UTF-8 é Firefox igore balise head
UTF-8 UTF-8 ISO-8859-1 ? --
UTF-8 ISO-8859-1 ISO-8859-1 ? Firefox igore balise head
ISO-8859-1 UTF-8 UTF-8 é Firefox igore balise head
ISO-8859-1 ISO-8859-1 UTF-8 é --
ISO-8859-1 UTF-8 ISO-8859-1 é Firefox igore balise head
ISO-8859-1 ISO-8859-1 ISO-8859-1 é
Si tu as default_charset différent de vide dans php.ini ou dans le code php, cherche pas plus loin c'est la ou est le problème. Cela aiderai beaucoup que l'on est accès même temporairement au serveur.
Sinon installe cette extension de firefox : LiveHTTPHeaders et donne une copie d'un header de retour...
Sinon un autre test pour exclure les problème de database, creer ce fichier test.php copie bien dans le bon encodage, je crois que tu es sous KDE, donc ouvre Kwrite, Outil -> encodage -> europe...
Code : Tout sélectionner
<?php
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>test 3</title>
</head>
<body>
<div>
J\'ai été à la maison.
</div>
</body>
</html>';
?>
@vgib Comme tu peux le voir si on configure bien php.ini (c'est les valeurs par défauts) Donc par défaut le charset est vide (c'est au navigateur web de deviner), tu ne devrai pas avoir besoin de spécifier quoi que ce soit dans les headers. Donne moi un seul exemple ou tu le devrai. L'encodage c'est la page web qui doit le fournir... Bien sur il faut respecter un minimum les règles du W3C...
Résumer dans les headers si vous voulez pouvoir gérer facilement différent charset On ne doit pas avoir "charset=UTF-8" dans le Content-encoding... IE le supporte très bien... (une chose qu'il supporte)
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [Apache/PHP] PB encodage (nouveau)
Effectivement tu as raison le plus simple est de définir le default_charset dans le php.ini, et s'y tenir.
Le charset doit être indiqué via les directives: iconv.input_encoding ,iconv.internal_encoding ,iconv.output_encoding
Le problème ici, c'est qu'il y a l'encoding de retour de la base de donnée, qui semble différent de celui du php.
Il faudrait regarder si l'encoding des fonctions mysql est celui du php par défaut, ou celui du serveur, pour cela un simple mysql_client_encoding ( http://fr.php.net/manual/fr/function.my ... coding.php ) faira l'affaire.
La doc semble muette sur ce point.
Moi je sais que je configure php et mysql en UTF8, mais bon cela ne résoud pas le problème.
VGib
Le charset doit être indiqué via les directives: iconv.input_encoding ,iconv.internal_encoding ,iconv.output_encoding
Le problème ici, c'est qu'il y a l'encoding de retour de la base de donnée, qui semble différent de celui du php.
Il faudrait regarder si l'encoding des fonctions mysql est celui du php par défaut, ou celui du serveur, pour cela un simple mysql_client_encoding ( http://fr.php.net/manual/fr/function.my ... coding.php ) faira l'affaire.
La doc semble muette sur ce point.
Moi je sais que je configure php et mysql en UTF8, mais bon cela ne résoud pas le problème.
VGib
Re: [Apache/PHP] PB encodage (nouveau)
Sinon, dans mon cas, MySQL étant en UTF-8 sous Archlinux et mon code étant prévu pour tourner sur une base de données Ubuntu (qui sont eux en latin1, pas bien...), je fais ça après un mysql_connect :
++
Code : Tout sélectionner
mysql_set_charset('latin1',$link);
Macbook Pro 13 pouces (modèle 5,5 de juin 2009) - sous ArchLinux depuis l'install 2009.08
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Re: [Apache/PHP] PB encodage
Tu peux modifier les valeurs d'encodage :
Pourquoi vous voulez tous mettre des charsets ISO ? l'ISO c'est has been, le seul charset efficace pour jamais avoir de problème quelle que soit la langue c'est utf8.
Cette solution t'oblige à altérer ta base de donnée, mais sinon la seule solution c'est celle de Cédric :
Code : Tout sélectionner
ALTER DATABASE `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Cette solution t'oblige à altérer ta base de donnée, mais sinon la seule solution c'est celle de Cédric :
cedric a écrit :[...] je fais ça après un mysql_connect :++Code : Tout sélectionner
mysql_set_charset('latin1',$link);
Re: [Apache/PHP] PB encodage
C'est à dire que parfois on a pas trop le choix quand on récupère des applis codés en ISO
Mais lors des refontes, c'est de l'UTF8 sinon rien !!
++
Mais lors des refontes, c'est de l'UTF8 sinon rien !!
++
Macbook Pro 13 pouces (modèle 5,5 de juin 2009) - sous ArchLinux depuis l'install 2009.08
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.
Puisque vous m'avez aidé, j'ai fait une page dédiée dans le wiki ! Merci.