cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012
-
11 juin 2008 à 20:47
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012
-
12 juin 2008 à 20:20
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 :
'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
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012 12 juin 2008 à 20:20
BruNews:
Bien vu pour le 'b' avec Chr(0) et non pas chr(254), mais même en ajoutant un chr(0) à la fin de la séquence dans la variable Essai, l'instruction StrConv(Essai, vbFromUnicode) continue de m'afficher une série de '?'.
De toute manière et en lisant les forums, je m'apercois qu'un controle usuel affichant du texte sous VB6 ne permet pas d'afficher tous les caractères de l'Unicode.
Je vais donc sans doute me contenter de lire des caractères avec chr(0) en premier octet. Et vu que je ne sais pas quoi faire avec StrConv(...), je ferai un truc maison du genre:
Function ConversionSemblantUnicode(myString As String) As String
Dim myTmp As String, X As Long, myTmp1 As String
'# Supprime les 2 premiers octets, définissant la norme? :
myTmp = Right(myString, Len(myString) - 2)
'# Conversion (caractère sur 2 octets vers caractère sur 1 octet)
'myTmp = StrConv(myTmp, vbNarrow) '-> Ben non, ça marche pas.
For X = 2 To Len(myTmp) Step 2
myTmp1 = myTmp1 & Mid(myTmp, X, 1)
Next X
'! Reste à voir les 2 derniers octets Chr(0)
'# Affectation de la fonction:
ConversionSemblantUnicode = myTmp1
End Function