Accueil > > > QUOTED PRINTABLE VERSION AMÉLIORÉ
QUOTED PRINTABLE VERSION AMÉLIORÉ
Information sur la source
Description
une version 125 fois plus rapide que l'ancienne!!! Adaptation au jeu de caractère. Je me suis aperçu du problème quand j'essayé de décoder email codé avec du utf-8, du coup la première version de ma fonction donnait des résultats bizarres! et la cause est le jeu de caractères! Le code est facile à comprendre il suffit de suivre avec du pas à pas si vous voulez un truc à décoder bah ouvrez un fichier .eml avec notepade et cherchez Content-Transfer-Encoding="quoted-printable" copi er ce qui a en dessus oui le truc avec plein d'= ;) suivez pas à pas et vous comprendrez.
Source
- 'mettre ca dans une module
- Friend Function QuotePrintNew(ByVal brute As String, ByVal charset As String) As String
- Dim resul As String = ""
- Dim deco As System.Text.Encoding
- Try
- deco = System.Text.Encoding.GetEncoding(charset)
- Catch ex As Exception
-
- deco = System.Text.Encoding.GetEncoding("iso-8859-1")
- End Try
-
- If deco.IsSingleByte Then 'ce tupe de codage se fait -il sur 1 ou 2 bytes
- resul = LookForSimple(deco, brute) 'codage sur un byte ex blabla=57 veut dire blabla & chr(57)
- 'mais le résultat dépend du type de codage
- Else
- resul = LookForDouble(deco, brute) 'codage sur 2 bytes blabla=57=87
- End If
-
-
-
- Return resul
- End Function
-
- Private Function LookForDouble(ByVal deco As System.Text.Encoding, ByVal brute As String) As String
- Dim i As Integer = 1
- Dim j As Integer = 0
- Dim temp As New System.Text.StringBuilder
- Dim ch As Char
- Dim table(1) As Byte
- Try
- Do While i <= brute.Length
- ch = Mid(brute, i, 1)
- If ch <> "=" Then
- temp.Append(ch)
- i += 1
- Else
- If Mid(brute, i + 1, 2) <> vbCrLf Then
- table(0) = CByte("&H" & Mid(brute, i + 1, 2))
- i += 3
- If Mid(brute, i, 1) = "=" Then
- If Mid(brute, i + 1, 2) <> vbCrLf Then
- table(1) = CByte("&H" & Mid(brute, i + 1, 2))
- i += 3
- Else
- table(1) = CByte("&H" & Mid(brute, i + 4, 2))
- i += 6
- End If
- End If
- temp.Append(deco.GetString(table))
- Else
- temp.Append(vbCrLf)
- i += 3
- End If
-
-
- End If
- Loop
- Catch ex As Exception
-
- End Try
- Return temp.ToString
- End Function
-
- Friend Function LookForSimple(ByVal deco As System.Text.Encoding, ByVal brute As String) As String
- Dim i As Integer = 1
- Dim temp As New System.Text.StringBuilder
- Dim ch As Char
- Dim table(0) As Byte
- Do While i <= brute.Length
- ch = Mid(brute, i, 1)
- If ch <> "=" Then
- temp.Append(ch)
- i += 1
- Else
- If Mid(brute, i + 1, 2) = vbCrLf Then
- temp.Append(vbCrLf)
- i += 3
- Else
- table(0) = CByte("&H" & Mid(brute, i + 1, 2))
- temp.Append(deco.GetString(table))
- i += 3
- End If
- End If
- Loop
- Return temp.ToString
- End Function
'mettre ca dans une module
Friend Function QuotePrintNew(ByVal brute As String, ByVal charset As String) As String
Dim resul As String = ""
Dim deco As System.Text.Encoding
Try
deco = System.Text.Encoding.GetEncoding(charset)
Catch ex As Exception
deco = System.Text.Encoding.GetEncoding("iso-8859-1")
End Try
If deco.IsSingleByte Then 'ce tupe de codage se fait -il sur 1 ou 2 bytes
resul = LookForSimple(deco, brute) 'codage sur un byte ex blabla=57 veut dire blabla & chr(57)
'mais le résultat dépend du type de codage
Else
resul = LookForDouble(deco, brute) 'codage sur 2 bytes blabla=57=87
End If
Return resul
End Function
Private Function LookForDouble(ByVal deco As System.Text.Encoding, ByVal brute As String) As String
Dim i As Integer = 1
Dim j As Integer = 0
Dim temp As New System.Text.StringBuilder
Dim ch As Char
Dim table(1) As Byte
Try
Do While i <= brute.Length
ch = Mid(brute, i, 1)
If ch <> "=" Then
temp.Append(ch)
i += 1
Else
If Mid(brute, i + 1, 2) <> vbCrLf Then
table(0) = CByte("&H" & Mid(brute, i + 1, 2))
i += 3
If Mid(brute, i, 1) = "=" Then
If Mid(brute, i + 1, 2) <> vbCrLf Then
table(1) = CByte("&H" & Mid(brute, i + 1, 2))
i += 3
Else
table(1) = CByte("&H" & Mid(brute, i + 4, 2))
i += 6
End If
End If
temp.Append(deco.GetString(table))
Else
temp.Append(vbCrLf)
i += 3
End If
End If
Loop
Catch ex As Exception
End Try
Return temp.ToString
End Function
Friend Function LookForSimple(ByVal deco As System.Text.Encoding, ByVal brute As String) As String
Dim i As Integer = 1
Dim temp As New System.Text.StringBuilder
Dim ch As Char
Dim table(0) As Byte
Do While i <= brute.Length
ch = Mid(brute, i, 1)
If ch <> "=" Then
temp.Append(ch)
i += 1
Else
If Mid(brute, i + 1, 2) = vbCrLf Then
temp.Append(vbCrLf)
i += 3
Else
table(0) = CByte("&H" & Mid(brute, i + 1, 2))
temp.Append(deco.GetString(table))
i += 3
End If
End If
Loop
Return temp.ToString
End Function
Historique
- 27 septembre 2006 23:44:33 :
- remplacement de mid par substring et len par length et l'opérateur & par string.concat
- 21 octobre 2006 18:05:04 :
- Amélioration et portabilité
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Fonction DECODE d'oracle sous DB2 [ par acoue ]
Bonjour,je souhaite utiliser un équivalent de la fonction DECODE d'oracle sous BD2/UDB mais je ne l'a connait pas.Si quelqu'un pouvait m'aiguiller.Au
fonction DECODE avec VB6 [ par bargaoui ]
Bonjour tt le monde, j'ai un petit problème, j'ai une requête SQL avec vb6 qui comporte une fonction decode mais ça pas bien marché, malgré que le cha
Appeler un projet C# en vb.net [ par julien2424 ]
Bonjour à vous tous, Je suis débutant en développement et je suis encore confronté à un problème que je ne peux résoudre alors je me retour vers ce f
|
Derniers Blogs
[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc
Forum
RE : VITESSERE : VITESSE par ossama261988
Cliquez pour lire la suite par ossama261988
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|