Bonjour à tous.
Mon programme parcourt un fichier CSV et récupère des noms de fichiers.
Or je rencontre un problème pour accéder aux fichiers dont le nom contient par exemple des accents tels que "é".
En faisant des recherches sur la msdn, j'ai réussi à me bricoler le bout de code suivant, qui permet de convertir une chaîne d'un encodage à un autre :
Ensuite, j'affiche la chaîne d'entrée et la chaîne de sortie, et c'est malheureusement les mêmes. Les accents sont remplacés par des "?" pour les deux chaînes.
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 // Le nom de fichier que je souhaite convertir string SourceString = "MonRepertoire\Fichier-é"; // Le code page utilisé par ma console (IBM850) Encoding IMB850 = Encoding.GetEncoding(850); // Le code page que je souhaite utiliser (Windows-1252) Encoding Windows1252 = Encoding.GetEncoding(1252); // Convertit ma chaîne en un tableau de bytes byte[] SourceBytes = IMB850.GetBytes(SourceString); // Convertit d'un encodage à l'autre byte[] DestBytes = Encoding.Convert(IMB850, Windows1252, SourceBytes); // Convertit le tableau de bytes en tableau de chars puis en chaîne char[] DestChars = new char[Windows1252.GetCharCount(DestBytes, 0, DestBytes.Length)]; Windows1252.GetChars(DestBytes, 0, DestBytes.Length, DestChars, 0); string DestString = new string(DestChars);
Exemple d'affichage : MonRepertoire\Fichier-? au lieu de MonRepertoire\Fichier-é
Quelqu'un pourrait-il éclairer ma lanterne s.v.p ?
Merci d'avance
Partager