Codage chaine caractère.

Codage chaine caractère. - C#/.NET managed - Programmation

Marsh Posté le 16-12-2006 à 02:23:32    

Bonsoir à tous,
 
Voilà dans une application, je lis les informations contenue sur les carte identité à puce via un lecteur adapté.
Cela fonctionne très bien sauf quand l'adresse contient un accent.
 
Un problème de codage... Mais je ne sais pas comment le résoudre.
 
J'utilise la DLL fournie et c'est la seule qui puisse me permettre ça ( http://eid.belgium.be ).
La méthode que j'appelle pour lire l'adresse me retourne un "Object" que je convertis en string pour pouvoir l'afficher dans un textbox.
 
Quelqu'un peut m'aider à faire en sorte que les caractères en question soient correctement interpretés ?
 
D'avance merci;
 
PS: sur la carte d'identité, l'adresse (ainsi que d'autres champs) sont codés en UTF-8

Reply

Marsh Posté le 16-12-2006 à 02:23:32   

Reply

Marsh Posté le 16-12-2006 à 10:56:05    

il faudrait pas un peu de marshaling pour transtyper correctement la chaîne issue de la dll si celle c'est n'est pas managée ?

Reply

Marsh Posté le 16-12-2006 à 11:35:55    

il y a moyen de spécifié l'encodage  
 
il existe des classes pour les convertion d'encodages

Reply

Marsh Posté le 16-12-2006 à 12:47:12    

System.Text.Encoding est ton amie...

Reply

Marsh Posté le 17-12-2006 à 12:50:07    

Merci bcp. J'ai essayé pleins de solutions et je n'y arrive pas :(
 
Le code :
this.cliAdrRue = (string)MapColAddress.GetValue("Street" ); // Méthode venant de la DLL fournie
==> GetValue retourne un "object" qui est un string et peut importe ce que je fasse, les caractères bizarres sont toujours là.
 
D'avance merci pour votre aide
 
PS: dans une application VB6, cela fonctionne très bien avec la méthode de la DLL et ce, en utilisant cette fonction :


Private Const CP_UTF8 = 65001
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long
 
Function ConvertUTF8(UTF8 As String) As String
    Dim lLen As Long
    Dim strOut As String
    lLen = MultiByteToWideChar(CP_UTF8, 0, UTF8, Len(UTF8), 0, 0)
    strOut = String(lLen * 2, 0)
    MultiByteToWideChar CP_UTF8, 0, UTF8, Len(UTF8), strOut, lLen
    ConvertUTF8 = StrConv(strOut, vbFromUnicode)
End Function


Mais pas moyen de trouver l'équivalent à "MultiByteToWideChar" en C#


Message édité par imnotgood le 17-12-2006 à 14:54:01
Reply

Marsh Posté le 17-12-2006 à 14:57:34    

Pour me dépanner j'ai créé une DLL avec VB6 (contenant cette fonction) et cela fonctionne donc très bien.
 
Mais je continue néenmoins à chercher comment le faire en C#...

Reply

Marsh Posté le 18-12-2006 à 22:52:56    

Lamarmotte a écrit :

System.Text.Encoding est ton amie...


++
 
et en plus c'est propre (parceque bonjour la bortabilité si on commence à utiliser les fonctions du kernel...)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed