Multilingue, UTF-8 & co...

Eléphant du PHP | 66 Messages

05 août 2008, 14:17

Bonjour,

J'ai lu qq posts sur le sujet, mais je n'ai pas vraiment trouvé de solutions satisfaisantes, alors j'en relance un nouveau... :lol:

Je développe une appli multilingue avec Symfony / PHP 5 / MySql 5:
- ma bdd est en UTF-8 + collation utf8_unicode_ci
- mes pages sont en charset utf-8

J'ai remarqué que les données entrées dans les formulaires étaient
transformées tout de suite, par exemple "é" devient "é" dès qu'il est
récupéré dans l'objet. Après, ce caractère "é" est stocké en bdd.
Quand il est récupéré pour être affiché, il est alors reconvertit
correctement en "é".

J'aimerais stocker en bdd les accents, les vrais - quitte à devoir faire une transformation pour éviter un mauvais affichage par la suite! Ceci pour notamment
que les tries par ordre alphabétique fonctionne: qq a-t-il déjà
expérimenté ces problèmes et peut-il m'aider? Merci!

ViPHP
ViPHP | 3300 Messages

05 août 2008, 14:52

y'a des chances qu'une de tes informations soit fausse, je pencherais pour les pages qui ne seraient pas affichée en utf8 (à vérifier dans firefox) si ce n'est pas le cas alors il y'a encore autre chose, mais comme on l'a dit assez souvent ces derniers temps la config utf8 globale des différents acteurs d'un processus informatique sous unix/linux tient du casse tête donc il faut creuser encore un peu pour être sur.
Fait du php depuis que ca existe ou presque :)

Eléphant du PHP | 66 Messages

05 août 2008, 15:14

Je confirme que mes pages sont bien en UTF8!

Comme je creusais sur des forums mysql et symfony en parallèle, voici un début de réponse qui règle le problème de l'encodage pour la bdd.

Voici une config de Propel via le fichier dadabases.yml qui marche:

Code : Tout sélectionner

propel: class: sfPropelDatabase param: encoding: utf8 charset: utf8 dsn: mysql://user:password@localhost/mabase
Après, au niveau de la récupération des champs input, j'ai toujours le même problème ("é" devient "é"), ce qui fait merder ma fonction de "strippage" (pour les connaisseurs!). :wink:

ViPHP
ViPHP | 3300 Messages

05 août 2008, 15:20

tu sais que php aussi doit être utf8

http://electron-libre.fassnet.net/utf8.php

Y'a un peu de tout pour l'utf8 peut etre que ca te seras utile
Fait du php depuis que ca existe ou presque :)

Eléphant du PHP | 66 Messages

05 août 2008, 15:37

bingo...

Code : Tout sélectionner

encoding php = Array ( [input_encoding] => ISO-8859-1 [output_encoding] => ISO-8859-1 [internal_encoding] => ISO-8859-1 )
bon mais ca m'avance pas des masses car la fonction "iconv_set_encoding ( string $type , string $charset )" modifie l'encodage pour la durée du script... avec un FWK comme Symfony, c'est même pas la peine d'y penser, je vais regarder ce qu'il se trame à ce niveau... peut-être qu'avec un filtre...

vivement php6... :roll:

ViPHP
ViPHP | 3300 Messages

05 août 2008, 15:41

malheureusement pour symfony je ne vais pas pouvoir t'aider, mais je doute qu'un framework ayant autant de succès souffre d'un problème aussi grave qu'une absence de possibilité de changer le charset comme on en a envie, il y a bcp d'autres viphp qui connaisse symfony ici et qui pourront sans doute mieux t'aider sur ce sujet précis.
Fait du php depuis que ca existe ou presque :)

Eléphant du PHP | 66 Messages

05 août 2008, 15:46

ok merci pour ton aide, et avant d'autres réponses, je précise que mon fichier settings.yml contient bien sûr:

Code : Tout sélectionner

all: .settings: charset: utf-8

Eléphant du PHP | 66 Messages

07 août 2008, 17:06

Ce problème venait en fait de l'utilisation de l'EDI Eclipse auquel il faut préciser le type d'encodage des fichiers pour leur enregistrement: Project/Properties/Ressource/File Type Encoding.