OVH Cloud OVH Cloud

StreamReader System.Text.Encoding...

12 réponses
Avatar
Alex St-laurent
Dans une application en CSharp j'utilse StreamReader pour lire des fichier de
code source (.cs). Je doit Stocker les ligne du fichier dans une variable
string, malheureusement, aucun des type de encoding ne réussi à lire la ligne
telle qu'elle est. Certain Encoding ne lisent pas la ligne du tout, d'autres
ne lisent pas les accents et d'autre ne lisent pas les symbole + pour la
concaténation.

Quelqu'un connait-il une façon de lire les fichier .cs avec exactitude, ou
encore connaissez vous le type d'encoding de ces fichiers ?

Merci de votre aide

10 réponses

1 2
Avatar
Alex St-laurent
"Zazar" a écrit :
La norme impose que tout compilateur C# sache lire un fichier encodé en
utf-8. Si vos fichiers ne sont pas en utf-8, essayez de voir s'ils ne sont
pas en ANSI (Encoding.Default) : le compilateur C# fourni avec le
framework.net supporte aussi cet encodage. Si ça ne marche toujours pas :
quel éditeur utilisez vous ?



Les fichier .cs que j'utilise sont encoder en ANSI mais même si j'utilise
System.Text.Encoding.ASCII les accent sont remplacés par "?". Quant à
l'éditeur que j'utilise je ne sais pas comment vérifier alors si tu peux me
dire comment faire je pourrai te dire lequel j'utilise. Je ne sais pas si ça
peut aider mais j'utilise .Net Framework 1.1.

Merci de votre aide
Avatar
Zazar
> Les fichier .cs que j'utilise sont encoder en ANSI mais même si j'utilise
System.Text.Encoding.ASCII les accent sont remplacés par "?".



Pour de l'ANSI, il faut utiliser System.Encoding.Default.

Quant à
l'éditeur que j'utilise je ne sais pas comment vérifier alors si tu peux
me
dire comment faire je pourrai te dire lequel j'utilise. Je ne sais pas si
ça
peut aider mais j'utilise .Net Framework 1.1.




D'où viennent vos fichiers .cs ? C'est vous qui les écrivez ? Si oui avec
quoi les écrivez vous (Visual Studio, le bloc-notes, ...) ?

--

Zazar
Avatar
Alex St-laurent
"Zazar" a écrit :

D'où viennent vos fichiers .cs ? C'est vous qui les écrivez ? Si oui avec
quoi les écrivez vous (Visual Studio, le bloc-notes, ...) ?



Nous les écrivons avec Visual Studio.
Avatar
Patrick Philippot
Alex St-laurent wrote:
Et je fais comment pour vérifiez dans le débogueur ?



Pour faire simple, ajoutez ça dans votre code une fois que la chaîne (s)
est chargée:

char[] arr;
arr = s.ToCharArray();


Examinez ensuite le contenu de arr et vérifiez les codes ascii.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Zazar
>> D'où viennent vos fichiers .cs ? C'est vous qui les écrivez ? Si oui avec
quoi les écrivez vous (Visual Studio, le bloc-notes, ...) ?



Nous les écrivons avec Visual Studio.





Visual Studio écrit par défaut en ANSI (en tout cas ma version) :
System.Text.Encoding.Default n'a pas fonctionné ?

Sinon, prenez un fichier dans visual studio, faîtes enregistrer-sous ->
enregistrer avec codage (le petit bouton à coté du bouton enregistrer) et là
vous verrez quel encodage il utilise.



--

Zazar
Avatar
Alex St-laurent
"Patrick Philippot" wrote:
Pour faire simple, ajoutez ça dans votre code une fois que la chaîne (s)
est chargée:

char[] arr;
arr = s.ToCharArray();


Examinez ensuite le contenu de arr et vérifiez les codes ascii.



J'ai essayer cette technique après avoir lu ce message, lors de l'exécution
de l'applicatoin j'ai glissé arr dans la fenetre Watch et j'ai vérigier tout
les caractère qu'il contenait, malheureusement les accent y sont aussi
remplacer par "?".
Avatar
Alex St-laurent
"Zazar" a écrit :
Visual Studio écrit par défaut en ANSI (en tout cas ma version) :
System.Text.Encoding.Default n'a pas fonctionné ?

Sinon, prenez un fichier dans visual studio, faîtes enregistrer-sous ->
enregistrer avec codage (le petit bouton à coté du bouton enregistrer) et là
vous verrez quel encodage il utilise.



Voila ce n'était que ça, Merci. Je cherchait quel System.Text.Encoding
marcherait, je croiyait que c'était ASCII mais Default fonctionne.
Avatar
Alex St-laurent
Finalement, les fichier .Cs sont encoder en ANSI et non en ASCII, je croiyait
que c'était la même chose mais ils semble que non car
System.Text.Encoding.ASCII ne fonctionnait pas. Je doit utiliser
System.Text.Encoding.Default.

Merci de ton aide.
Avatar
Patrick Philippot
Alex St-laurent wrote:
J'ai essayer cette technique après avoir lu ce message, lors de
l'exécution de l'applicatoin j'ai glissé arr dans la fenetre Watch et
j'ai vérigier tout les caractère qu'il contenait, malheureusement les
accent y sont aussi remplacer par "?".



En fait, il faudrait visualiser sous forme de tableau d'octets dans la
Memory Window mais ce n'est pas simple en C#. Il faudrait désassembler
le code qui manipule la chaîne dans la fenêtre de désasssemblage pour
repérer l'adresse ou le registre qui contient l'adresse et entrer cette
adresse dans la Memory Window. Puisque vous n'êtes pas familier avec VS,
nous allons vous éviter ça.

Quand vous chargez ce fichier source dans Notepad, est-ce qu'il
s'affiche correctement?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
Alex St-laurent wrote:
Voila ce n'était que ça, Merci. Je cherchait quel System.Text.Encoding
marcherait, je croiyait que c'était ASCII mais Default fonctionne.



et aussi:

malheureusement, aucun des type de encoding ne réussi à lire la ligne
telle qu'elle est.



Comme quoi une bonne formulation (et une bonne vérification) au départ
évitent parfois des errements inutiles.

Aviez-vous essayé le constructeur sans argument encoding comme je
l'avais proposé au départ?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
1 2