Je ne crois pas que MySQL modifie l'encodage de la base.
Si on écrit dans une base MySQL à partir de Mac OS X en utilisant RB
2007 sans modifier l'encodage, l'écriture se fera par défaut en UTF8.
Par contre, quand on va relire ces données, il faudra préciser à RB
que l'on va lire de l'UTF8, puisqu'il semble qu'il attende de
l'isoLatin par défaut. MySQL Query Browser lui va tenter de lire de
l'IsoLatin si c'est l'encodage défini dans la base: il ne lira donc
pas cette base correctement, jusqu'à ce que l'on modifie l'encodage
de la base en UTF8. Il va donc récupérer cette information et lire
correctement de l'UTF8. Il semble que RB ne puisse pas récupérer
cette information (encodage défini pour la base), et considère
toujours qu'il lit de l'isolatin, qui n'est pas du tout l'encodage
par défaut comme le dit Jules. MySQL n'encode rien du tout, il reçoit
les caractères qu'on lui envoie avec l'encodage d'origine.
"J'utilisais une base MySQL en IsoLatin" : Qu'est-ce que ça veut
dire ? Que la base était écrite en IsoLatin, où que l'IsoLatin était
défini comme encodage dans MySQL Query Browser ?
"et devais sans cesse recoder les textes issus de cette base en
UTF8" : Comment ? la seule façon de recoder le texte est d'utiliser
un textconverter ou convertencoding. S cette phrase signifie
l'utilisation de "defineencoding", il n'y a pas de modification de
l'encodage, mais on signale simplement à RB que l'on va lire de
l'UTF8. Dans l'état actuel du plugin MySQL de RB, il faut utiliser
"defineencoding" à chaque fois que l'on lit une donnée qui n'est pas
encodée en isolatin.
J'ai bien conscience que mes explications restent assez nébuleuses,
mais si on comprend que le fait de changer la définition de
l'encodage dans une base MySQL ne change pas cet encodage, et que,
contrairement à ce qui semble logique, "defineencoding" ne modifie
pas l'encodage d'un texte, on peut aborder ce problème d'encodage de
façon plus sereine.
Jacques Chanliau
Le 29 mai 07 à 19:02, Christian Baudrant a écrit :
Bonjour,
Encore sur sombre histoire d'encodage de caractères...
J'utilisais une base MySQL en IsoLatin et devais sans cesse recoder
les textes issu de cette base en UTF8 pour que RB puisse manipuler
ces textes, et inversement pour mettre à jour la base. Je me suis
donc décidé à passer ma base en UTF8 afin d'accélérer les traitements.
Via le MySQL Query Browser, tout va bien, les données sont visibles
et exportables sans problèmes... par compte, côté RB, ça ne marche
pas. MySQL voit la base en UTF8, mais RB voit toujours la base en
IsoLatin !
Quelqu'un aurait-il une idée sur ce problème ?
Merci d'avance
Christian BAUDRANT
(PowerMAC sous Mac OS X 10.4 & RB 2007 release 2)
|