realbasic-nug.fr
[Top] [All Lists]

Re: REALbasic, MySQL et encodage de caractères

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: REALbasic, MySQL et encodage de caractères
From: Jacques Chanliau <jacques dot chanliau at wanadoo dot fr>
Date: Tue, 29 May 2007 23:43:47 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <E439D3C9-25F5-45CA-927E-9429BBCB44F2 at wanadoo dot fr>
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)








<Prev in Thread] Current Thread [Next in Thread>