Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1875 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Codage chaine caractère.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Codage chaine caractère.

n°1492129
imnotgood
Posté le 16-12-2006 à 02:23:32  profilanswer
 

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

mood
Publicité
Posté le 16-12-2006 à 02:23:32  profilanswer
 

n°1492145
_darkalt3_
Proctopathe
Posté le 16-12-2006 à 10:56:05  profilanswer
 

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 ?

n°1492156
moi23372
Posté le 16-12-2006 à 11:35:55  profilanswer
 

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

n°1492164
Lamarmotte
Posté le 16-12-2006 à 12:47:12  profilanswer
 

System.Text.Encoding est ton amie...

n°1492344
imnotgood
Posté le 17-12-2006 à 12:50:07  profilanswer
 

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
n°1492369
imnotgood
Posté le 17-12-2006 à 14:57:34  profilanswer
 

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#...

n°1493018
MagicBuzz
Posté le 18-12-2006 à 22:52:56  profilanswer
 

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...)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Codage chaine caractère.

 

Sujets relatifs
caractere speciaux php et bbdProblème de codage d'une chaine de caractère
XSL : remplacer une chaine de caractère[C# .Net] Recuperer un chaine contenu dans un SubItems d'une Listview
[MySQL] Problème avec requête et condition INretourner dans une chaine un fichier PHP interprété
[JS ] chaine de caractère tronquée par un point d'interrogation 
Plus de sujets relatifs à : Codage chaine caractère.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR