CONVERTIR UNE CHAÎNE DE CARACTÈRES EN CHAÎNE SANS ACCENT

Signaler
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Messages postés
18
Date d'inscription
mercredi 15 décembre 2010
Statut
Membre
Dernière intervention
17 janvier 2013
-
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/34235-convertir-une-chaine-de-caracteres-en-chaine-sans-accent

Messages postés
18
Date d'inscription
mercredi 15 décembre 2010
Statut
Membre
Dernière intervention
17 janvier 2013
2
Bonjour,

Le code n'est pas mal et bien réfléchi, merci.

++
Messages postés
56
Date d'inscription
mercredi 29 septembre 2004
Statut
Membre
Dernière intervention
4 janvier 2010
1
Messages postés
1
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
26 juillet 2009

J'ai trouvé un truc encore plus facile et rapide. On doit d'abord convertir du codepage de réception à un codepage intermédiaire à un octet (UTF-8), ensuite on utilise le seule codepage qui "élimine" les accents en les remplaçant par une lettre non-accentuée plutôt qu'un "?" (ISO-8859-8 = Hébreu):

Nom = {variable accentuée provenant d'un fichier, etc}
Dim Bytes() As Byte
' Remplacer "ISO-8859-1" par le codepage des données reçues
Bytes = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(Nom)
Nom = System.Text.Encoding.UTF8.GetString(Bytes)
' Remplacer les caractères accentués par l'équivalent sans accents à l'aide du codepage hébreu
Bytes = System.Text.Encoding.GetEncoding("ISO-8859-8").GetBytes(Nom)
Nom = System.Text.Encoding.ASCII.GetString(Bytes).ToUpper
Messages postés
1
Date d'inscription
dimanche 8 février 2004
Statut
Membre
Dernière intervention
25 août 2008

pour faire plus simple, voici un petit code encore plus rapide.

string AccentFrom = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç";
string AccentTo = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc";

for (int i1=0;i1<AccentFrom.Length;i1++)
{
from = from.Replace(AccentFrom[i1], AccentTo[i1]);
}
return from;

concernant le code utilisant la fonction FormaterText, je vous la déconseille. Essayez betement de passer la ligne: je vais à l'université: vous verrez que le ' est retourné comme un ? ( j'ai essayé avec le code 1250,1251,1252 )
Afficher les 8 commentaires