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: Powel <powel at mac dot com>
Date: Wed, 30 May 2007 10:38:00 +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>
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)






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