Encodage ANSI vers UTF-16
Bonjour,
Je développe actuellement un service web en VB.Net, (avec le framework 2.0) qui doit décomposer un flux XML pour créer des requêtes SQL et les exécuter.
J'ai donc procédé comme ci-dessous pour lire mon fichier XML
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<WebMethod()> Public Function ImportFluxXML(ByVal Flux_XML As String) As String
Dim DocXML As New XmlDocument
'Décomposion du Flux XML pour sauvegarder le contrôle'
Try
'chargement du flux XML dans l objet XMLDocument'
DocXML.LoadXml(Flux_XML)
Catch ex As Exception
Return ex.Message
End Try
''''''''''''''''''''''''''''''''''''''''
'Lecture du flux |
Mon problème est que mon flux contient des 'é' et qu'il sont converti en '?' lorsque la chaine est passer au service web. Lorsque j’appelle LoadXml() j’obtiens alors l'erreur :
Citation:
Le caractère '?', valeur hexadécimale 0x3F, ne peut pas être inclus dans un nom. Ligne 2, position 27946.
J'ai donc ajouté le code suivant pour convertir ma chaine ANSI en UTF-16:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<WebMethod()> Public Function ImportFluxXML(ByVal Flux_XML As String) As String
Dim DocXML As New XmlDocument
Dim Flux_XML_ANSI() As Byte
Dim Flux_XML_UTF16 As String
'convertion en UTF16'
Flux_XML_UTF16 = ""
Flux_XML_ANSI = Encoding.GetEncoding(1252).GetBytes(Flux_XML)
Flux_XML_ANSI = Encoding.Convert(Encoding.GetEncoding(1252), Encoding.BigEndianUnicode, Flux_XML_ANSI)
Flux_XML_UTF16 = Encoding.BigEndianUnicode.GetString(Flux_XML_ANSI)
'Décomposion du Flux XML pour sauvegarder le contrôle'
Try
'chargement du flux XML dans l objet XMLDocument'
DocXML.LoadXml(Flux_XML_UTF16)
Catch ex As Exception
Return ex.Message
End Try
''''''''''''''''''''''''''''''''''''''''
'Lecture du flux |
Mais les caractères '?' non pas été convertis en 'é'.
Quelqu'un aurait il une solution ?
Merci d'avance