Problème de conversion d'encodage
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 :
Code:
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); |
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.
Exemple d'affichage : MonRepertoire\Fichier-? au lieu de MonRepertoire\Fichier-é
Quelqu'un pourrait-il éclairer ma lanterne s.v.p ?
Merci d'avance :)