FileInfo en ASCII [Résolu]

Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
- - Dernière réponse : PrinceSilk
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
- 8 févr. 2012 à 23:38
Bonjour,

Je suis en train d'écrire un programme, et je récupère les noms des fichiers d'un répertoire via FileInfo.name
Mais voilà, la chaine obtenue est en Unicode, et certains caractères des noms de fichier appartiennent normalement au code ASCII étendu (caractère au dessus de 128)...
Or j'ai besoin de connaitre la valeur de chaque octet, et en utilisant string[...], j'obtiens des valeurs de 8230, 8212...

Comment récupérer les noms des fichiers en ASCII et non en Unicode?

Merciiii
Afficher la suite 

14 réponses

Meilleure réponse
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
3
Merci
Bonjour,

D'accord, Donc, je corriges ma ligne :
System.Text.Encoding.GetEncoding(NumEncode).GetBytes

Ensuite, essayes quelques pages de codes (NumEncode) pour voir le résultat.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 214 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
Après quelques recherches, les caractères incriminés appartiennent au Alt Codes: … pour [alt] 0133 et — pour [alt] 0151... mais mis dans un fichier vierge, chacun de ses caractères ne pèse qu'un octet, alors ils ont forcément une valeur ASCII comprise entre 0 et 255, non?
Commenter la réponse de PrinceSilk
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Si tu veux convertir du texte en tableau d'octet, regardes System.Text.Encoding.ToByteArray (ou similaire).

Je n'ai pas MSDN de chargé, désolé.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
c'est tenté, mais tous les caractères au dessus de 127 renvoient l'octet 63 donc "?"...
Commenter la réponse de PrinceSilk
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Car tu as choisi l'encodage ASCII.
Essayes plutôt UTF-8 ou alors, il te faudra utiliser une page de code (voir la liste des numéros des pages de codes, https://fr.wikipedia.org/wiki/Page_de_code )

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
Toujours pas, FileInfo renvoi le nom du fichier en Unicode... ya une autre façon de récupérer le nom des fichiers?
Commenter la réponse de PrinceSilk
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Comelmnt tu fais actuellement, un peu de code ne serais pas de trop maintenant.
(Regardes le point 2 de ma signature)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
FileInfo[] Fichiers = DossiersInfo.GetFiles();

 foreach (FileInfo NomFichier in Fichiers)
{
                    DataFichier.Rows[LigneEnCours].Cells[0].Value = NomFichier.Name;
}


NomFichier.Name me donne: ¥ÂäÒÆÖÊ…—ÓæÎ

J'ai tenté des conversions avec:

                    byte[] TmpBytes = Encoding.ASCII.GetBytes(NomFichier.Name);


et

                    byte[] TmpBytes = Encoding.UTF8.GetBytes(NomFichier.Name);


mais rien n'y fait...

la chaine de caractère donnée par char[] est
165, 194, 228, 210, 198, 214, 202, 8230, 157, 8212, 143, 211, 230, 206
alors qu'en ouvrant cette même chaine dans un éditeur hexadécimal après l'avoir mis dans un fichier vierge (longueur 14 octets), je trouve:
165, 194, 228, 210, 198, 214, 202, 133, 157, 151, 143, 211, 230, 206

Donc pour une raison que j'ignore, les caractères … (133) et — (151) ne sont pas correctement reconnu...

Une idée?...
Commenter la réponse de PrinceSilk
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
marrant, la page csharpfr as les même problème de codage
Commenter la réponse de PrinceSilk
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Le fait de copier le texte dans un éditeur de texte l'as fait changer de page.
Essayes d'utiliser la page 1252 :
(new System.Text.Encoding(1252)).GetBytes(NomFichier.Name)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
J'ai rien compris...

Tout ce que je sais, c'est qu'éditer le nom de mon fichier dans l'explorateur, le copier par ctrl+C et le coller dans un fichier txt par ctrl+V me donne un fichier du nombre exact d'octets qu'il y a de symboles dans le nom du fichier, et que chacun des symboles correspond à une valeur comprise entre 0 et 255!

pas réussi à mettre en oeuvre la solution proposé
Commenter la réponse de PrinceSilk
Messages postés
14591
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2019
137
0
Merci
Bonjour,

Tu veux en faire quoi de ce nom de fichier ?
Normalement, le Framework travaille en Unicode en mémoire.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
Je désire utiliser la valeur des octets pour les additionner et les soustraire (système de cryptage)
Commenter la réponse de PrinceSilk
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
0
Merci
Merci beaucoup, j'ai utiliser la page zéro, et ça marche!
Commenter la réponse de PrinceSilk