ENLEVER LES ACCENTS

Signaler
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25946-enlever-les-accents

Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Pour VB6 voir ici : www.vbfrance.com/code.aspx?ID=33666
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Voici une mise en oeuvre de cette solution :

Dim aOctets As Byte() = GetEncoding("iso-8859-8").GetBytes(sChaine)
sEnleverAccents = GetEncoding(1252).GetString(aOctets)

Const sEncodageIso8859_15$ = "iso-8859-15"
' Frédéric François, c'ur
' iso-8859-8 -> windows-1252 : Frederic Francois, cour ' Meilleure solution
' iso-8859-15 -> windows-1252 : Frédéric François, c½ur ' Utile pour détecter <>
' windows-1251 -> windows-1252 : Frederic Francois, c'ur ' Ancienne solution

' Détection des caractères propres à iso-8859-15 : ¤ ¦ ¨ ´ ¸ ¼ ½ ¾ ? ? ? ? ? ? ? ?
' http://fr.wikipedia.org/wiki/ISO_8859-15
If String.Compare( _
GetEncoding(sEncodageIso8859_15).GetString( _
GetEncoding(1252).GetBytes(sChaine)), sChaine) = 0 Then _
Exit Function

Dim i% = 0
Dim iLen% = sChaine.Length
Dim sChaineIso$ = GetEncoding(sEncodageIso8859_15).GetString( _
GetEncoding(1252).GetBytes(sChaine))
Dim ac1, ac2, ac3 As Char()
ac1 = sChaine.ToCharArray
ac2 = sChaineIso.ToCharArray
ac3 = sEnleverAccents.ToCharArray
Dim sbDest As New StringBuilder
For i = 0 To iLen - 1
If ac1(i) <> ac2(i) Then
Select Case ac1(i) ' ¤ ¦ ¨ ´ ¸ ¼ ½ ¾ ? ? ? ? ? ? ? ?
Case "¤"c : sbDest.Append("o")
Case "¦"c : sbDest.Append("|")
Case "¨"c : sbDest.Append("..")
Case "´"c : sbDest.Append("'")
Case "¸"c : sbDest.Append(",")
Case "¼"c : sbDest.Append("1/4")
Case "½"c : sbDest.Append("1/2")
Case "¾"c : sbDest.Append("3/4")
Case "?"c : sbDest.Append("E")
Case "?"c : sbDest.Append("S")
Case "?"c : sbDest.Append("s")
Case "?"c : sbDest.Append("Z")
Case "?"c : sbDest.Append("z")
Case "?"c : sbDest.Append("oe")
Case "?"c : sbDest.Append("OE")
Case "?"c : sbDest.Append("Y")
Case Else
If bDebug Then Debug.WriteLine("?? : " & ac1(i))
End Select
Else
sbDest.Append(ac3(i))
End If
Next i
sEnleverAccents = sbDest.ToString
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Il y a une meilleure solution ici :
www.codeproject.com/useritems/EncodingAccents.asp
Messages postés
8
Date d'inscription
lundi 31 décembre 2001
Statut
Membre
Dernière intervention
13 septembre 2007

merci très pratique
Afficher les 7 commentaires