Software » [Debian/LAMP] Full UTF-8
[Debian/LAMP] Full UTF-8
Publié le 20/03/2008 @ 11:40:36,
Par blietaerBonjour
Contexte: une Debian en prod avec du LAMP dessus.
Le but du jeu, tout flanquer depuis la lecture dans MySQL jusqu'au browser, via apache/php5, en UTF-8 (ceci parce quele site sera traduit en de nombreuses langues, y compris avec des signes bizarres).
Le truc c'est que si je je fais une bête requête sur une table et que j'affiche, tous les accents sont quand-même remplacé par le beau losange noir avec un "?" dedans.
Je peux bien sur jouer sur l'encodage dans mon Firefox..et ca repasse en beaux accents, mais c'est pas le but (je le remets en UTF-8 donc)
Si je viens RE-taper un mysql_set_charset() pour le repasser en utf8, tout est tout beau
(Le pire, c'est que les modules de Typo3 se font mal sur les mots avec un accent: il les affiche bien, mais vire la première lettre du string!!???
Les données:
php_info()
MySQL:
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/
collation connection utf8_unicode_ci
(Valeur globale) utf8_general_ci
collation database utf8_general_ci
collation server utf8_general_ci
completion type 0
Dois-je aussi faire quelque chose dans Apache2?
Jeanne: J'étais pas au FOSDEM à la discussion pHP6 sur l'unicode...ca me sauverait dans ce cas-ci?
Contexte: une Debian en prod avec du LAMP dessus.
Le but du jeu, tout flanquer depuis la lecture dans MySQL jusqu'au browser, via apache/php5, en UTF-8 (ceci parce quele site sera traduit en de nombreuses langues, y compris avec des signes bizarres).
Le truc c'est que si je je fais une bête requête sur une table et que j'affiche, tous les accents sont quand-même remplacé par le beau losange noir avec un "?" dedans.
Je peux bien sur jouer sur l'encodage dans mon Firefox..et ca repasse en beaux accents, mais c'est pas le but (je le remets en UTF-8 donc)
Si je viens RE-taper un mysql_set_charset() pour le repasser en utf8, tout est tout beau
(Le pire, c'est que les modules de Typo3 se font mal sur les mots avec un accent: il les affiche bien, mais vire la première lettre du string!!???
Les données:
php_info()
MySQL:
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/
collation connection utf8_unicode_ci
(Valeur globale) utf8_general_ci
collation database utf8_general_ci
collation server utf8_general_ci
completion type 0
Dois-je aussi faire quelque chose dans Apache2?
Jeanne: J'étais pas au FOSDEM à la discussion pHP6 sur l'unicode...ca me sauverait dans ce cas-ci?
Et au besoin s'arrêter.
[Debian/LAMP] Full UTF-8
Publié le 20/03/2008 @ 12:25:01,
Par 3Dosheader('Content-type: text/html; charset=utf-8');
au début de ton script principal PHP (de tête je peux me tromper) Sinon vérifies aussi l'encodage de tes fichiers html/php toussa si ils ne sont pas encodés en iso au lieu de utf-8 ...
Pour php6 la gestion de l'unicode n'a pas à voir avec ton problème, il intervient dans php même (par exemple dans des substr("chaîne avec des accents èéà ", 0, 8); ou l'utf-8 prend la place de deux caractères iso...
au début de ton script principal PHP (de tête je peux me tromper) Sinon vérifies aussi l'encodage de tes fichiers html/php toussa si ils ne sont pas encodés en iso au lieu de utf-8 ...
Pour php6 la gestion de l'unicode n'a pas à voir avec ton problème, il intervient dans php même (par exemple dans des substr("chaîne avec des accents èéà ", 0, 8); ou l'utf-8 prend la place de deux caractères iso...
Tout ce qui coûte me dégoûte
[Debian/LAMP] Full UTF-8
Publié le 20/03/2008 @ 12:36:59,
Par blietaerOui bien sur tous mes fichiers PHP commence par ce header:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Mais c'est après que ca se gâte...
Note que je ne fais rien écrire par PHP mais bien afficher des champs puisé dans MySQL qui est full-réglé en utf8.
Pareil pour apache2
Pareil pour PHP5 (tous les php.ini, dans tous les sous-directory).
Je lis bcp de conseil comme faire un :
mysql_query("SET NAMES, 'utf8'");
Tout de suite après la connection avec la DB.
Mais cela ne change rien (et ne serait pas une solution valable non plus...)
Seul un petit: mysql_set_charset("utf8", $link) fonctionne...
Nottons que sur une machine Gentoo full-utf8 tout roule..donc ca doit vraiment être dans la config de cette Debian...
Des pistes?
d'autres fichiers config à vérifier?
Merci pour vos idées.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Mais c'est après que ca se gâte...
Note que je ne fais rien écrire par PHP mais bien afficher des champs puisé dans MySQL qui est full-réglé en utf8.
Pareil pour apache2
Pareil pour PHP5 (tous les php.ini, dans tous les sous-directory).
Je lis bcp de conseil comme faire un :
mysql_query("SET NAMES, 'utf8'");
Tout de suite après la connection avec la DB.
Mais cela ne change rien (et ne serait pas une solution valable non plus...)
Seul un petit: mysql_set_charset("utf8", $link) fonctionne...
Nottons que sur une machine Gentoo full-utf8 tout roule..donc ca doit vraiment être dans la config de cette Debian...
Des pistes?
d'autres fichiers config à vérifier?
Merci pour vos idées.
Et au besoin s'arrêter.
[Debian/LAMP] Full UTF-8
Publié le 20/03/2008 @ 13:08:05,
Par ovhVérifie que tes scripts PHP sont eux aussi encodés en UTF-8 (vois cela dans ton éditeur préféré ).
Sinon de manière générale : je déteste les charset, ça fout tout le temps la merde à un moment ou à un autre. Pas pour rien que je reste en iso-8859-15, ça au moins ça marche à tous les coups. Les langues exotiques j'utilise pas et n'utiliserai jamais du moins dans le cadre de ce job-ci
Sinon de manière générale : je déteste les charset, ça fout tout le temps la merde à un moment ou à un autre. Pas pour rien que je reste en iso-8859-15, ça au moins ça marche à tous les coups. Les langues exotiques j'utilise pas et n'utiliserai jamais du moins dans le cadre de ce job-ci
Je n'ai rien à voir avec www.ovh.com
[Debian/LAMP] Full UTF-8
Publié le 20/03/2008 @ 13:46:36,
Par 3DosPerso, je me met en full utf-8 et ça fonctionne au poil
Bli, je parlais pas de l'en-tête html mais de la fonction header php. Apache renvoie le charset utilisé au lieu du charset du fichier s'il est différent. Il faut donc, dans php, spécifier le header à renvoyer avec la fonction "header"
Du reste de la config, je vois pas trop puisque ta BDD semble bien configurée. Je sais que chez OVH (l'hébergeur XD ) leur bdd est configurée n'importe comment et qu'il reste des settings en latin1 et le reste en utf-8 donc avant chaque connection je dois faire un set names = "utf-8"
Comme je le disais et ovh aussi, vérifies aussi l'encodage de tes fichiers .php pour être sur qu'ils soient en utf-8 eux aussi.
Bli, je parlais pas de l'en-tête html mais de la fonction header php. Apache renvoie le charset utilisé au lieu du charset du fichier s'il est différent. Il faut donc, dans php, spécifier le header à renvoyer avec la fonction "header"
Du reste de la config, je vois pas trop puisque ta BDD semble bien configurée. Je sais que chez OVH (l'hébergeur XD ) leur bdd est configurée n'importe comment et qu'il reste des settings en latin1 et le reste en utf-8 donc avant chaque connection je dois faire un set names = "utf-8"
Comme je le disais et ovh aussi, vérifies aussi l'encodage de tes fichiers .php pour être sur qu'ils soient en utf-8 eux aussi.
Tout ce qui coûte me dégoûte