Bonjour,
J'ai plusieurs fois récupéré une 'séquence string' basé sur Unicode (dans le champ Commentaire d'un ID3v2), mais je n'arrive pas à le convertir au format ANSI. Je précise que cette séquence string ne contient que des caractères ... usuels de chez nous (pas de symboles chinois ou autres).
La conversion de Unicode vers ANSI par StrConv(...) ne fonction pas (j'ai Win XP FR).
A lire différents foums, je n'ai pas trouvé de solution et je fais peut-être fausse route.
Dans le cas contraire, j'ai 'capturé' la séquence Unicode dans une variable appelé 'Essai'.
Ouvrez un nouveau projet, placez-y un controle Text1 (MultiLine=TRUE), et 2 bouton de commandes Command1 et command2.
Puis collez le code suivant :
Dim Essai As String
Private Sub Form_Load()
Essai = Chr(0) + Chr(255) + Chr(254) + Chr(98)
Essai = Essai & Chr(0) + Chr(121) + Chr(0) + Chr(32) + Chr(0) + Chr(84)
Essai = Essai & Chr(0) + Chr(75) + Chr(0) + Chr(32) + Chr(0) + Chr(38)
Essai = Essai & Chr(0) + Chr(32) + Chr(0) + Chr(73) + Chr(0) + Chr(110)
Essai = Essai & Chr(0) + Chr(116) + Chr(0) + Chr(101) + Chr(0) + Chr(114)
Essai = Essai & Chr(0) + Chr(99) + Chr(0) + Chr(101) + Chr(0) + Chr(112)
Essai = Essai & Chr(0) + Chr(116) + Chr(0) + Chr(111) + Chr(0) + Chr(114)
Essai = Essai & Chr(0) + Chr(13) + Chr(0) + Chr(10) + Chr(0) + Chr(48)
Essai = Essai & Chr(0) + Chr(32) + Chr(0) + Chr(87) + Chr(0) + Chr(111)
Essai = Essai & Chr(0) + Chr(99) + Chr(0) + Chr(104) + Chr(0) + Chr(101)
Essai = Essai & Chr(0) + Chr(110) + Chr(0) + Chr(32) + Chr(0) + Chr(80)
Essai = Essai & Chr(0) + Chr(108) + Chr(0) + Chr(97) + Chr(0) + Chr(116)
Essai = Essai & Chr(0) + Chr(122) + Chr(0) + Chr(32) + Chr(0) + Chr(49)
Essai = Essai & Chr(0) + Chr(13) + Chr(0) + Chr(10) + Chr(0) + Chr(49)
Essai = Essai & Chr(0) + Chr(51) + Chr(0) + Chr(32) + Chr(0) + Chr(87)
Essai = Essai & Chr(0) + Chr(111) + Chr(0) + Chr(99) + Chr(0) + Chr(104)
Essai = Essai & Chr(0) + Chr(101) + Chr(0) + Chr(110) + Chr(0) + Chr(32)
Essai = Essai & Chr(0) + Chr(105) + Chr(0) + Chr(110) + Chr(0) + Chr(32)
Essai = Essai & Chr(0) + Chr(100) + Chr(0) + Chr(101) + Chr(0) + Chr(114)
Essai = Essai & Chr(0) + Chr(32) + Chr(0) + Chr(84) + Chr(0) + Chr(111)
Essai = Essai & Chr(0) + Chr(112) + Chr(0) + Chr(32) + Chr(0) + Chr(49)
Essai = Essai & Chr(0) + Chr(48) + Chr(0)
' Le contenu complet de Essai est supposé codé en Unicode.
' Le résultat devrait être les 3 lignes suivantes:
' by TK & Interceptor
' 0 Wochen Platz 1
' 13 Wochen in der Top 10
'Text1.MultiLine = True 'Manuellement !
Text1.Text = Essai
End Sub
Private Sub Command1_Click()
' La conversion 'brut' par StrConv ne me donne qu'une
' série de ????? (avec quelques espaces entre)
Text1.Text = StrConv(Essai, vbFromUnicode)
End Sub
Private Sub Command2_Click()
' La conversion 'maison' (ConversionUnicode) n'est
' qu'un bricolage et ne fonctionne QUE dans ce cas :
Text1.Text = ConversionUnicode(Essai)
End Sub
Function ConversionUnicode(myString As String) As String
Dim myTmp As String
'# Post-traitement spécial (bricolage !!!):
If Len(myString) > 2 Then
If Left(myString, 1) = Chr(0) Then
myTmp = Right(myString, Len(myString) - 1)
End If
Else
ConversionUnicode = myString
Exit Function
End If
myTmp = StrConv(myTmp, vbFromUnicode)
'Pour retirer le premier '?' -> encore du bricolage :
myTmp = Right(myTmp, Len(myTmp) - 1)
ConversionUnicode = myTmp
End Function
Ma question donc : Peut-on convertir ma variable 'Essai ' pour qu'elle soit affichable, sans passer par mon bricolage (Command2) ?
titicar
