Le 29 05 2007 à 23:43, Jacques Chanliau a écrit :
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.
Je n'utilise pas MySQL. Je suis donc mal placé pour porter un jugement.
Mais je ne comprends pas pourquoi RB attend de l'iSOLATIN par défaut
venant de MySQL, puisque MySQL se contente d'enregistrer telle
quelles les données entrantes ?
je crois que l'exposé du problème de Christian n'est pas très clair.
jules
"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
Où passeras-tu l'Eternité ?
|