IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Convertion de texte UTF8


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut Convertion de texte UTF8
    Bonjour,

    J'ai créé un programme qui gère des fichiers eml (email).
    A l'intérieur de certains fichiers, il y a des chaines de caractère dans ce genre :
    Subject: =?utf-8?B?Q29tcHRlIHJlbmR1IFNBViBwb3VyIEZyw6lkw6lyaWM=?=
    J'aimerais réussir à les traduire en :
    Subject: Compte rendu SAV de Frédéric
    Mais je n'y arrive pas, pouvez vous m'aider?

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    La chaîne Q29tcHRlIHJlbmR1IFNBViBwb3VyIEZyw6lkw6lyaWM= correspond à ton texte encodé en Base64 je pense. Ca y ressemble fortement en tout cas.

    Donc essaye avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim buffer As Byte() = Convert.FromBase64String("Q29tcHRlIHJlbmR1IFNBViBwb3VyIEZyw6lkw6lyaWM=")
    Dim s As String = Encoding.UTF8.GetString(buffer)

  3. #3
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut
    Merci StormimOn
    A suivre mon code, mais j'aimerais bien abuser et demander si vous auriez une idée pour convertir les =E9 en é
    Sur : =?iso-8859-1?Q?LES_TERRASSES_D'ESTIVAL_-_CR_r=E9union_de_chantier_n=B0_10?= =?iso-8859-1?Q?_du__22.04.10?=

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
        Private Sub decoderLeSujetDuMail(ByRef szObjet As String)
            Dim szObjetDecoupe() As String = Split(szObjet, "?")
            Dim buffer As Byte()
            Dim bSortir As Boolean = False
            Dim iIncrement As Integer = 0
     
            If szObjetDecoupe.Length >= 5 Then
                szObjet = ""
                If Mid(szObjetDecoupe(0), szObjetDecoupe(0).Length) = "=" Then
                    szObjet += Mid(szObjetDecoupe(0), 1, szObjetDecoupe(0).Length - 1)
                End If
                While Not bSortir
                    If szObjetDecoupe.Length >= 5 + iIncrement Then
                        If LCase(szObjetDecoupe(2 + iIncrement)) = "b" Then
                            buffer = Convert.FromBase64String(szObjetDecoupe(3 + iIncrement))
                            szObjet += Encoding.UTF8.GetString(buffer)
                        ElseIf LCase(szObjetDecoupe(2 + iIncrement)) = "q" Then
                            szObjet += Replace(szObjetDecoupe(3 + iIncrement), "_", " ")
                            'Il manque la conversion des caractères spécifique genre =E9
                        End If
                        iIncrement += 4
                    Else
                        bSortir = True
                    End If
                End While
            End If
        End Sub

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut
    J'ai trouvé un mec qui avait mis une fonction, je l'ai retouché un peu et voici le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
        Private Sub decoderLeSujetDuMail(ByRef szObjet As String)
            Dim szObjetDecoupe() As String = Split(szObjet, "?")
            Dim buffer As Byte()
            Dim bSortir As Boolean = False
            Dim iIncrement As Integer = 0
     
            If szObjetDecoupe.Length >= 5 Then
                szObjet = ""
                If Mid(szObjetDecoupe(0), szObjetDecoupe(0).Length) = "=" Then
                    szObjet += Mid(szObjetDecoupe(0), 1, szObjetDecoupe(0).Length - 1)
                End If
                While Not bSortir
                    If szObjetDecoupe.Length >= 5 + iIncrement Then
                        If LCase(szObjetDecoupe(2 + iIncrement)) = "b" Then
                            buffer = Convert.FromBase64String(szObjetDecoupe(3 + iIncrement))
                            szObjet += Encoding.GetEncoding(szObjetDecoupe(1 + iIncrement)).GetString(buffer)
                        ElseIf LCase(szObjetDecoupe(2 + iIncrement)) = "q" Then
                            szObjet += decoderLigneTypeQ(szObjetDecoupe(3 + iIncrement))
                        End If
                        iIncrement += 4
                    Else
                        bSortir = True
                    End If
                End While
            End If
        End Sub
     
        Private Function decoderLigneTypeQ(ByVal szLigneADecoder As String) As String
            Dim tableauDeCaractere() As Char = szLigneADecoder
            Dim i As Integer
            Dim szChaineARetourner As New StringBuilder
     
            For i = 0 To tableauDeCaractere.Length - 1
                If tableauDeCaractere(i) = "=" Then
                    Dim szValeurHexa As String
                    If tableauDeCaractere(i + 1) = "0" Then
                        szValeurHexa = tableauDeCaractere(i + 2)
                    Else
                        szValeurHexa = tableauDeCaractere(i + 1) & tableauDeCaractere(i + 2)
                    End If
                    Dim iValeurHexa As Integer = Val("&H" & szValeurHexa)
                    If szValeurHexa = Hex(iValeurHexa) Then
                        szChaineARetourner.Append(Chr(iValeurHexa))
                        i += 2
                    Else
                        szChaineARetourner.Append(tableauDeCaractere(i))
                    End If
                ElseIf tableauDeCaractere(i) = "_" Then
                    szChaineARetourner.Append(" ")
                Else
                    szChaineARetourner.Append(tableauDeCaractere(i))
                End If
            Next
            Return szChaineARetourner.ToString
        End Function
    Il suffit de passer à decoderLeSujetDuMail un string contenant le sujet d'un mail récupéré du subject d'un fichier eml, et il fera la convertion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertion date texte
    Par benlakhel dans le forum Excel
    Réponses: 8
    Dernier message: 14/10/2013, 16h49
  2. [AC-2007] Fichier texte UTF8
    Par loustic-31 dans le forum Access
    Réponses: 1
    Dernier message: 07/08/2013, 22h13
  3. Pb de convertion de texte en nombre
    Par dehorter olivier dans le forum Langage
    Réponses: 4
    Dernier message: 25/03/2011, 12h46
  4. fichier text UTF8
    Par duboisa dans le forum Ruby on Rails
    Réponses: 5
    Dernier message: 08/12/2009, 11h45
  5. Comparaison de texte utf8 et latin1
    Par MartyMacFly dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/05/2008, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo