OVH Cloud OVH Cloud

encoding d'un fichier text

1 réponse
Avatar
Boblemar
Bonjour,

y'a t'il un moyen de connaître l'encoding d'un fichier text en c# ?

Bob

1 réponse

Avatar
# Cyrille37 #
Boblemar wrote:
Bonjour,

y'a t'il un moyen de connaître l'encoding d'un fichier text en c# ?

Bob



Si celà peut t'éaclairer un peu,
voici une copie de 2 messages postés sur microsoft.public.fr.dotnet il y a qlqs jours.

cyrille

======================

Il faut toujours s'inspirer des méthodes existantes du Framework pour c réer
les siennes. En l'occurrence, pour lire des chaînes de caractères, qu elque
soit le fichier, il faut toujours spécifier les deux paramètres: nom du
fichier + encoding, comme le montrent les méthodes du Framework. Enleve r le
paramètre encoding, ce n'est pas toujours possible car c'est faire une
présupposition ("en l'air" :-) par rapport au transcodage OCTETS <->
CHARACTERES.

Ceci étant dit, on peut donc essayer de minimiser cette présuppositio n, et
pour cela, l'UTF8 est à mon avis est le plus intéressant. En effet 1) il
couvre l'ensemble des signes donc il ne limite pas l'application, et 2) l e
fait qu'un fichier est encodé en UTF8 peut (ce n'est pas obligatoire, n i
systématique) se déduire de l'entête physique du fichier (ce qu'on appelle
le BOM, le Byte Order Mark), ce qui n'est pas le cas d'ANSI.

Simon

======================

En écriture, c'est toi qui contrôles l'encodage. Je te conseille d'ut iliser
UTF-8 car c'est l'encodage qui va s'imposer de plus en plus (et c'est le
défaut du framework .NET).

En lecture, il y a un pb car il n'y a pas en général de moyen de devi ner
l'encodage du flux que tu vas lire. Il y a des cas particuliers (présen ce de
Byte Order Mark en début de fichier, entête XML) où le fichier te d onne
l'info mais il y a de nombreux cas il n'y a pas d'info. Et si tu lis avec le
mauvais encodage, les accents sauteront ou se transformeront bizarement.

Mon conseil: essaie de standardiser l'encodage de tes flux d'entrée en UTF-8
(dans ce cas, pas besoin de préciser l'encodage dans les APIs .NET car UTF-8
est le défaut). Si ce n'est pas possible, il faut que tu aies un moyen
externe (un fichier annexe, une entête de message) qui te fournisse
l'encodage.

L'alternative, ça serait d'écrire un algo qui va analyser le flux pou r
essayer de deviner l'encodage (par ex s'il rencontre les codes ISO-8859-1
des accents les plus fréquents en français, il considérera que c'es t du
ISO-9959-1) mais c'est compliqué et il y aura toujours un risque d'erre ur.

Bruno