Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
# 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
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.
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.