Bonjour,
J'ai effectivement aussi eu ce problème. Travaillant sur des millions
d'entrées dans MySQL, j'ai aussi décidé de passer MySQL en UTF8.
Sinon, la conversion en UTF8 puis en ISOLatin prenait trop de temps
lors de calcul important. Ce choix me semble donc être le bon.
Cela suppose de modifier tous les paramètres d'encodage de MySQL.
Le plus simple est d'ajouter :
#CHARSET
character-set-server=utf8
skip-character-set-client-handshake
init-connect='SET NAMES utf8'
dans my.conf au niveau de [mysqld].
Mais une fois cela fait, je confirme les propos de Jacques Chanliau.
Le plug-in MySQL de RB attendra de l'IsoLatin1. Il faut donc
préciser, lors de la lecture des données, que le texte en en UTF8
avec defineencoding.
votrerecordset.Field("votrevariable").value.DefineEncoding
(Encodings.UTF8)
Si votre base est en UTF-8 et que vous envoyez tout en UTF-8, vous
n'aurez aucun problème. Dans le cas contraire, DefineEncoding ne
changera rien. Les caractères s'afficheront bien, mais les
manipulations ne fonctionneront pas (Expressions régulières avec
accents, longueur de chaîne...).
Pour vérifier que votre configuration de MySQL est correcte, le plus
simple est d'observer la liste des variables et réglages du serveur
dans PHPMyAdmin Elle est plus complète dans dans MySQL Admin.
Vous devriez avoir cela.
character set client
utf8
utf8
character set connection
utf8
utf8
character set database
utf8
utf8
character set filesystem
binary
binary
character set results
utf8
utf8
character set server
utf8
utf8
character set system
utf8
utf8
collation connection
utf8_general_ci
utf8_general_ci
collation database
utf8_general_ci
utf8_general_ci
collation server
utf8_general_ci
utf8_general_ci
init connect
SET NAMES utf8
SET NAMES utf8
Dans ces conditions, la communication entre RB et MySQL fonctionne
parfaitement, et rapidement. Il est tout de même regrettable que le
plug-in ne soit pas en UTF-8 par défaut. Quelqu'un sait-il s'il est
possible de changer cette option définie par défaut ?
Powel
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)
|