Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Unicode vers ANSI (VB6) [ Système / Autre ] (titicar)

mercredi 11 juin 2008 à 20:47:58 | Unicode vers ANSI (VB6)

titicar

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

mercredi 11 juin 2008 à 21:31:28 | Re : Unicode vers ANSI (VB6)

BruNews

Administrateur CodeS-SourceS
Essai = Chr(0) + Chr(255) + Chr(254) + Chr(98)

ta chaile commence par "ÿ" ( Chr(0) + Chr(255) )

ensuite tu as: Chr(254) + Chr(98) au lieu de Chr(0) + Chr(98) pour le "b".

La fin d'une chaine unicode est faite de 2 zéros, pas d'1 seul. Tous les caractères doivent être sur 2 octets.

ciao...
BruNews, MVP VC++

jeudi 12 juin 2008 à 20:20:33 | Re : Unicode vers ANSI (VB6)

titicar

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

Mais si tu as d'autres suggestions...

titicar




Cette discussion est classé dans : unicode, essai, chr, mystring, mytmp


Répondre à ce message

Sujets en rapport avec ce message

afficher un mot chinois ecrit dans un fichier unicode [ par Thierry ] 'afficher un mot chinois ecrit dans un fichier unicode en utilisant visual basic6.'bonjour je voudrais afficher un mot chinois enregistre en unicode c Fonction pour tester les caractères Unicode [ par marie ] Je suis à la recherche d'une fonction VB 6 pour tester les caractères Unicode : quelquechose d'équivalent à Asc et Chr pour les caractères ASCII.Merci Retour a la ligne, comment / [ par FKY ] Le code suivant donne par Nix, voir ci-apres, ne fonctionne pas chez moi, j'obtiens 2 barres obliques a la place d'un retour de ligne.Je suis en VB6, A L'AIDEEE!!! CONVERSION VBScript >>> VB ( ~~c vital sioux plééé ~~) [ par pekinio ] Voila, hello a tlm.bon, en fait, c'est a propos du code "generateur de mots"(dans la categorie VB.NET!!!?), sur ce site.je trouve ce code interressant NURMITES [ par Ophidian ] tout simplement sublime quoique un peu simple jusqu'a present...juste pour me marrer, on peut remplacer "Log$ = Log$ + Chr$(10) + Chr$(13) + text$"par filtrer une requete à partir de vba [ par agnes ] salut à tousvoici mon pbdepuis a peu pres un mois je complete une base de données qui a tété crée par qq1 d'autresdonc je dois faire un filtre dans un Listview, une grosse colle. [ par Hebus ] Salut à tout le forum !Puisque les questions sur les ListView vont bon train, je vous pose la colle suivante :Je développe actuellement une applicatio tentative d'essai [ par bpl ] Je cherche à découvrir le vba par le biais d'un programme de gestion de personnelsa titre informel y a t il quelqu'un pour me guider depuis la basemer


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.