CONVERTIR UNE CHAÎNE DE CARACTÈRES EN CHAÎNE SANS ACCENT
tmcuh
Messages postés458Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention18 avril 2009
-
18 oct. 2005 à 11:41
eagledark
Messages postés18Date d'inscriptionmercredi 15 décembre 2010StatutMembreDernière intervention17 janvier 2013
-
6 mai 2011 à 22:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
JacquesLebrun
Messages postés1Date d'inscriptionmercredi 16 janvier 2008StatutMembreDernière intervention26 juillet 2009 26 juil. 2009 à 14:39
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
neodivx
Messages postés1Date d'inscriptiondimanche 8 février 2004StatutMembreDernière intervention25 août 2008 25 août 2008 à 12:17
pour faire plus simple, voici un petit code encore plus rapide.
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 )
cs_lmamine
Messages postés10Date d'inscriptiondimanche 1 septembre 2002StatutMembreDernière intervention 9 mai 2006 9 mai 2006 à 15:27
cs_Patrice99
Messages postés1221Date d'inscriptionjeudi 23 août 2001StatutMembreDernière intervention 9 septembre 2018 18 oct. 2005 à 15:56
On peut aussi passer par l'encodage 8 bits, mais cela ne fonctionnera pas pour certains caractères unicodes :
www.vbfrance.com/code.aspx?ID=25946
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 18 oct. 2005 à 14:44
L'idée est bonne mais tu peux améliorer ton code, les chaines sont indexables comme un tableau, et la méthode "Replace" accepte des arguments de type char.
tmcuh
Messages postés458Date d'inscriptiondimanche 22 décembre 2002StatutMembreDernière intervention18 avril 2009 18 oct. 2005 à 11:41
6 mai 2011 à 22:14
Le code n'est pas mal et bien réfléchi, merci.
++
24 févr. 2011 à 17:50
26 juil. 2009 à 14:39
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
25 août 2008 à 12:17
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 )
9 mai 2006 à 15:27
{
byte[] aOctets = System.Text.Encoding.GetEncoding(1251).GetBytes(text);
string sEnleverAccents = System.Text.Encoding.ASCII.GetString(aOctets);//.ToLower();
return sEnleverAccents;
}
18 oct. 2005 à 15:56
www.vbfrance.com/code.aspx?ID=25946
18 oct. 2005 à 14:44
18 oct. 2005 à 11:41