Option Explicit Private Declare Function MultiByteToWideChar Lib "Kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long Private Declare Function WideCharToMultiByte Lib "Kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long Private Function vers_uft8(ByVal mon_car As String) As String Dim tampon As String, lLength As Long lLength = WideCharToMultiByte(65001, 0, StrPtr(mon_car), -1, 0, 0, 0, 0) tampon = Space$(lLength) lLength = WideCharToMultiByte(65001, 0, StrPtr(mon_car), -1, StrPtr(tampon), Len(tampon), 0, 0) tampon = StrConv(tampon, vbUnicode) vers_uft8 = Left$(tampon, lLength - 1) End Function Private Function lire_uft8(ByVal mon_car As String) As String Dim tampon As String, lLength As Long mon_car = StrConv(mon_car, vbFromUnicode) lLength = MultiByteToWideChar(65001, 0, StrPtr(mon_car), -1, 0, 0) tampon = Space$(lLength) lLength = MultiByteToWideChar(65001, 0, StrPtr(mon_car), -1, StrPtr(tampon), Len(tampon)) lire_uft8 = Left$(tampon, lLength - 1) End Function Private Sub Command1_Click() Dim i As Integer, j As Integer, toto As String, titi As String, tata As String, cars As String, sep As String For i = 120 To 131 ' je prends cette fourchette exprès pour que tu voies mieux à partir d'où les choses diffèrent toto = Chr(i) titi = vers_uft8(toto) cars "": sep "" For j = 1 To Len(titi) If j > 1 Then sep = " + " cars = cars & sep & Asc(Mid(titi, j, 1)) Next tata = Asc(lire_uft8(titi)) MsgBox i & " " & cars & " " & tata Next End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question