Trouduc75
Messages postés2Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention15 octobre 2007
-
15 oct. 2007 à 13:01
Trouduc75
Messages postés2Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention15 octobre 2007
-
15 oct. 2007 à 16:08
Bonjour les amis.
J'ai un problème avec visual c# mysql et UTF-8.
J'écris actuellement un petit soft de gestion des records pour un serveur de jeu (TMN). Jusqu'à présent les records étaient gérés par des scripts PHP, les informations stockées dans une DB mysql avec des champs au format UTF-8. En PHP je n'ai aucun problème pour utiliser ces chaines de caratères en C# ce n'est pas la même affraire.
Par exemple, un pseudo stocké dans la DB peut être : $i$f60MGRRAL $w??a?y
($i$ff60 et $w correspondent à des codes de couleurs et de largeur de caractère pour un parser propres au jeu...)
Comme vous le voyez ce pseudo utilise des caractères spéciaux.
Une fois stocké dans la DB il apparait de la façon suivante avec dans PHPMyAdmin : $i$f60mgrral $wСЯαζy/192.168.1.12:2351
Si je récupère cette info par un script PHP j'obtiens le bon jeu de caractères ($i$f60MGRRAL $w??a?y) dans la page web (cf script en fin de message).
En revanche sous C# cela m'est bien impossible j'ai essayé de décoder la chaine en UTF-8 mais en vain. Je ne comprends plus rien.
L'affichage dans la console (ou dans un datagrid dans un form d'appli windows) est irrémédiablement celui que l'on voit sous PHPMyAdmin.
Si je renvoie cette chaine sous le jeu, elle sera mal interprétée, alors que si je le fait en PHP il n'y a aucun problème. Je deviens fou avec ce truc ! Quelqu'un aurait-il une solution ?
Merci d'avance les amis.
J'ai écris à titre d'exemple une appli console illustrant la méthode employé pour illustrer mon propos et ainsi qu’un script PHP réalisant la même opération. Les voici :
DEBUT CODE :
using
System;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
et c'est pareil. A moins que latin1 ou latin2 ou même utf8 ne soit pas le bon jeu de caractère... C'est toujours pareil ! Y'a un os...
Pourtant dans la doc du connecteur MySql on peut lire en effet :
<hr />
CharSet-or
Character Set, , Specifies the character set that should be used to encode all queries sent to the server. Resultsets are still returned in the character set of the data returned.
<hr />
C'est curieux que ça ne marche pas. J'ai aussi essayé un autre truc, le paramètre BlobAsUTF8IncludePattern, tel qu'on peut le lire dans la doc :
<hr />
BlobAsUTF8IncludePattern, null, Pattern that should be used to indicate which blob columns should be treated as UTF-8.
C'est pareil, j'ai aussi essayé les deux en même temps. C'est très bizarre. Je suis loin d'être un pro, mais il y a certainement un truc gros comme maison qui m'échappe. C'est typiquement le genre de connerie qu'on cherche pendant 10 ans alors que c'est tout bête...