|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 143 ![]() |
Bonjour,
J'utilise ExtJS 3.X et j'ai un FormPanel sur une page web codée UTF-8. Code :
La base elle-même est en interclassement utf8_unicode_ci. J'arrive à enregistrer des champs avec des accents et à les relire, mais dans la base, les caractères accentués éèàç, par exemple, apparaissent remplacés par des signes tels çôûî. Ce ne serait pas dramatique, puisque la relecture se fait correctement à travers ExtJS, si je n'utilisais pas cette même base avec une autre application écrite en C++, et là, les caractères mal encodés sont particuliérement gênants, voire rendent l'application inutilisable. Par conséquent, que faut-il faire pour que ExtJS encode les caratères correctement avant transmission à la base et stockage dans celle-ci ? D'avance merci. Kim |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
qu'est-ce que tu appelle à la relecture ??
avec quoi le lis tu ? si le soft que tu utilise n'est pas UTF-8 tu dois voir le code UTF-8 du caractère et non le caractère lui-même A+JYT |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 143 ![]() |
Merci sekaijin pour ta contribution.
Dans ma page web (en UTF-8), j'ai un FormPanel. Par le bouton 'Save', j'exécute une requête Ajax qui me sauvegarde mes enregistrements. Avec les boutons 'suivant', 'précédent', 'premier', 'dernier' ou 'load', j'ai une autre requête Ajax qui me permet de relire les enregistrements, voire de les re-sauvegarder après modification. Tous cela semble très bien marcher, y compris avec les caractères accentués, sauf que lorsque j'examine ces enregistrements avec PhpMyAdmin, je constate la présence de caractères mal codés. Où ça se gâte vraiment, c'est que je dois accéder également à la même base avec une application, que j'ai écrite en C++ (avec QT), et là, ca devient inexploitable, car je retrouve les caractères mal codés. Je précise qu'avec l'appli C++, les caractères accentués apparaissent normalement dans la base (à travers phpMyAdmin), mais sont "vérolés" si je lis avec mon application Web. D'avance merci si tu as une idée. Kim |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
pour que phpMyAdmin décode correctement le UTF8 il faut le paramètrer il y a très longtemps que je ne l'utilise plus il faut voir la doc.
quant à C++ ou QT c'est pareil ton API MyLib te permet de spécifier l'encodage de la base, des table des champs mais elle ne sait pas pour autant comment ton code C++ gère les caractère ISO UTF 8 16 32 CP EBDIC ... c'est donc à toi de faire le nécessaire lorsque tu lis ou écrit dans ta base. A+JYT |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 143 ![]() |
Bonjour,
En fait, le problème semble bien venir de ExtJS. En effet, si je met, en "dur" dans mon code PHP des textes accentués, tout se passe bien à l'écriture : ils sont sont corrects à la relecture dans phpMyAdmin et dans mon application C++ (tous deux correctements paramètrés en utf-8). Par contre, à la relecture avec ExtJs, ils apparaissent mal codés. Tout se passe comme si ExtJS, au moment de la transmission des paramètres vers la requête Ajax les encodait suivant ???? Si quelqu'un à une idée, merci d'avance. Kim |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() Urbaniste Inscription : juillet 2004 Messages : 1 421 ![]() |
Php n'est pas utf-8
Extjs Oui c'est donc toute ta chaine qu'il te faut voir ExtJs envoie de l'UTF8 à PHP qui ne le décode pas si tu ne le fais pas explicitement du coup les string son vu par Php comme de l'iso php le passe à la lib MySQL qui les prends en ISO les converti en UTF-8 pour les rendre compatible avec l'encodage de la base. OOPS c'était déjà de l'UTF8 A+JYT |
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() |
PHP est neutre dans l'encodage des caractères.
En revanche, les fichiers, et les données que tu envoies sont très important mais aussi à ne pas oublier si tu utilise un ORM comme Doctrine encode les caractère en fonction de la configuration détecté (voir le phpinfo de ton site). En règle général, quand on rencontre ce genre de problème c'est dût à un développement sous Windows. Je m'explique lors de la création du projet il faut faire attention à l'encodage de tes fichiers. Si tu fais un projet en full UTF-8 alors tout doit être en utf-8 même les fichiers. si tu utilise éclipse par exemple, il génère tous les projets en cp1252 (par défaut), il faut donc que tu lui indique que tu ne feras que de UTF-8. Sous les autres plate-forme, il n'y a pas ce problème car elles sont déjà en UTF-8. J'espère que j'ai été clair. Si c'est pas la cas dit le moi |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com