FileInfo en ASCII

Résolu
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013 - 8 févr. 2012 à 09:45
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

14 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2012 à 23:03
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
3
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
8 févr. 2012 à 10:08
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?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2012 à 12:48
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
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
8 févr. 2012 à 13:57
c'est tenté, mais tous les caractères au dessus de 127 renvoient l'octet 63 donc "?"...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2012 à 14:06
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
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
8 févr. 2012 à 15:20
Toujours pas, FileInfo renvoi le nom du fichier en Unicode... ya une autre façon de récupérer le nom des fichiers?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2012 à 18:46
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
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
8 févr. 2012 à 19:24
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?...
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
8 févr. 2012 à 19:25
marrant, la page csharpfr as les même problème de codage
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2012 à 19:28
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
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
8 févr. 2012 à 19:41
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é
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 févr. 2012 à 20:50
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
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
8 févr. 2012 à 21:12
Je désire utiliser la valeur des octets pour les additionner et les soustraire (système de cryptage)
0
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
Merci beaucoup, j'ai utiliser la page zéro, et ça marche!
0
Rejoignez-nous