OVH Cloud OVH Cloud

File.open avec un fichier texte

12 réponses
Avatar
Steeve
Bonjour, voici un peu de code que j'utilise pour loader des fichiers textes
dans unes page web. Tout se passe bien, sauf que certain caractère
n'apparaisent pas (EX: le "e" accent aigu... "é"). Quelqu'un peut me dire
pourquoi ?


private void ChargerBiographie()
{
string cheminBiographie;
TextReader contenu;
foreach (DataListItem item in DataList1.Items)
{
Label lblbio = (Label)item.FindControl("lblBiographie");
cheminBiographie = "../admin/biographies/" + lblid.Text + ".txt";

if (File.Exists(Server.MapPath(cheminBiographie)))
{
contenu = File.OpenText(Server.MapPath(cheminBiographie));
lblbio.Text = contenu.ReadToEnd();
contenu.Close();
}
else
{
lblbio.Visible = false;
}
}

10 réponses

1 2
Avatar
Bismark Prods
Hello,

"Steeve" a écrit dans le message de
news:%
Bonjour, voici un peu de code que j'utilise pour loader des fichiers


textes
dans unes page web. Tout se passe bien, sauf que certain caractère
n'apparaisent pas (EX: le "e" accent aigu... "é"). Quelqu'un peut me dire
pourquoi ?


private void ChargerBiographie()
{
string cheminBiographie;
TextReader contenu;
foreach (DataListItem item in DataList1.Items)
{
Label lblbio = (Label)item.FindControl("lblBiographie");
cheminBiographie = "../admin/biographies/" + lblid.Text + ".txt";

if (File.Exists(Server.MapPath(cheminBiographie)))
{
contenu = File.OpenText(Server.MapPath(cheminBiographie));



Exactement la meme chose que contenu = new
StreamReader(Server.MapPath(cheminBiographie));
Partant de là : il vous faut faire : new StreamReader(chemin,encoding); pour
donner le code des caractères

Bonne prog

lblbio.Text = contenu.ReadToEnd();
contenu.Close();
}
else
{
lblbio.Visible = false;
}
}




Avatar
YJLAMOTTE
Bonjour,

Dans ton cas tu peux utiliser System.Text.Encoding.Default si tu es sur un
OS français.
(Obtient un codage pour la page de codes ANSI actuelle du système.)

ca te permettra d'avoir les accents.

YJLAMOTTE

"Steeve" wrote:

Bonjour, voici un peu de code que j'utilise pour loader des fichiers textes
dans unes page web. Tout se passe bien, sauf que certain caractère
n'apparaisent pas (EX: le "e" accent aigu... "é"). Quelqu'un peut me dire
pourquoi ?


private void ChargerBiographie()
{
string cheminBiographie;
TextReader contenu;
foreach (DataListItem item in DataList1.Items)
{
Label lblbio = (Label)item.FindControl("lblBiographie");
cheminBiographie = "../admin/biographies/" + lblid.Text + ".txt";

if (File.Exists(Server.MapPath(cheminBiographie)))
{
contenu = File.OpenText(Server.MapPath(cheminBiographie));
lblbio.Text = contenu.ReadToEnd();
contenu.Close();
}
else
{
lblbio.Visible = false;
}
}





Avatar
Zazar
Bonjour,

Bonjour, voici un peu de code que j'utilise pour loader des fichiers


textes
dans unes page web. Tout se passe bien, sauf que certain caractère
n'apparaisent pas (EX: le "e" accent aigu... "é"). Quelqu'un peut me dire
pourquoi ?



Je vais compléter les réponses de Bismark Prods et de YJLAMOTTE.
Vous savez qu'un ordinateur ne comprend que des nombres et ne sait pas
manipuler des chaînes de caractères. Quand on écrit une chaîne de caractère
sur disque, ce sont en fait des nombres qui sont écrits. Une correspondance
est effectuée entre les nombres et les caractères, une sorte de table
d'associations si vous voulez. Seulement, il existe plusieurs tables
d'associations possibles et qui ne sont pas compatibles entre elles. Une
telle table d'association est un encodage. Quand vous lisez un fichier, il
faut le lire avec le même encodage que celui qui a été utilisé pour l'écrire
sinon vous ne retrouvez pas exactement les mêmes caractères. Ce phénomène se
remarque particulièrement sur les caractères accentués.

contenu = File.OpenText(Server.MapPath(cheminBiographie));



Quand vous ouvrez un fichier avec OpenText, l'encodage utilisé est l'UTF8.
Si vous voulez ouvrir un fichier avec un autre encodage, le plus simple est
d'utiliser la classe StreamReader.
Dans votre situation, un contenu = new
StreamReader(Server.MapPath(cheminBiographie), Encoding.Default) répondra
certainement à vos besoins. L'encodage utilisé pour lire le texte sera alors
l'encodage par défaut de votre environnement.

--
Zazar
Avatar
Bismark Prods
Et savez-vous combien de pages de codes il existe ?


"Zazar" a écrit dans le message
de news:
Bonjour,

> Bonjour, voici un peu de code que j'utilise pour loader des fichiers
textes
> dans unes page web. Tout se passe bien, sauf que certain caractère
> n'apparaisent pas (EX: le "e" accent aigu... "é"). Quelqu'un peut me


dire
> pourquoi ?

Je vais compléter les réponses de Bismark Prods et de YJLAMOTTE.
Vous savez qu'un ordinateur ne comprend que des nombres et ne sait pas
manipuler des chaînes de caractères. Quand on écrit une chaîne de


caractère
sur disque, ce sont en fait des nombres qui sont écrits. Une


correspondance
est effectuée entre les nombres et les caractères, une sorte de table
d'associations si vous voulez. Seulement, il existe plusieurs tables
d'associations possibles et qui ne sont pas compatibles entre elles. Une
telle table d'association est un encodage. Quand vous lisez un fichier, il
faut le lire avec le même encodage que celui qui a été utilisé pour


l'écrire
sinon vous ne retrouvez pas exactement les mêmes caractères. Ce phénomène


se
remarque particulièrement sur les caractères accentués.

> contenu = File.OpenText(Server.MapPath(cheminBiographie));

Quand vous ouvrez un fichier avec OpenText, l'encodage utilisé est l'UTF8.
Si vous voulez ouvrir un fichier avec un autre encodage, le plus simple


est
d'utiliser la classe StreamReader.
Dans votre situation, un contenu = new
StreamReader(Server.MapPath(cheminBiographie), Encoding.Default) répondra
certainement à vos besoins. L'encodage utilisé pour lire le texte sera


alors
l'encodage par défaut de votre environnement.

--
Zazar




Avatar
Zazar
> Et savez-vous combien de pages de codes il existe ?



Beaucoup me paraît être une bonne estimation. Il y a eu plusieurs pages de
code pour certaines langues et plusieurs versions de ces pages de codes.
Les gens qui ont travaillé sur Unicode, ont du faire un travail de fourmi
pour uniformiser tout ça.
Sinon, il me semble que Windows supporte une centaine de pages de code dont
quelques unes inventées par microsoft.

--
Zazar
Avatar
Bismark Prods
J'imagine qu'il n'y a pas autant de pages de codes que leur nom l'indique ?
Page 851 par exemple ? lol

"Zazar" a écrit dans le message
de news:

> Et savez-vous combien de pages de codes il existe ?

Beaucoup me paraît être une bonne estimation. Il y a eu plusieurs pages de
code pour certaines langues et plusieurs versions de ces pages de codes.
Les gens qui ont travaillé sur Unicode, ont du faire un travail de fourmi
pour uniformiser tout ça.
Sinon, il me semble que Windows supporte une centaine de pages de code


dont
quelques unes inventées par microsoft.

--
Zazar




Avatar
Zazar
> J'imagine qu'il n'y a pas autant de pages de codes que leur nom l'indique


?
Page 851 par exemple ? lol



J'imagine que non. Par contre j'ignore totalement comment la correspondance
entre une page de code et son numéro l'identifiant est établie.

--
Zazar
Avatar
Ambassadeur Kosh
tiens, un début de commencement à la réponse.
Unicode étant le sur ensemble qui contient tous les caracteres possibles de
l'univers (lettres, kanjis...)
une bonne partie de tes questions auront réponse en parcourant System.Text

Unicode UTF-7
Unicode UTF-8
Unicode UTF-16
ISO-8859-1 - Latin 1/West European
ISO-8859-2 - Latin 2/Central European
ISO-8859-3 - Latin 3/South European
ISO-8859-4 - Latin 4/North European
ISO-8859-5 - Cyrillic
ISO-8859-6 - Arabic
ISO-8859-7 - Greek
ISO-8859-8 - Hebrew
ISO-8859-9 - Latin 5/Turkish
ISO-8859-11 - TIS-620/Thai
ISO-8859-14 - Latin 8
ISO-8859-15 - Latin 9
ISO-2022-JP
ISO-2022-KR
ISO-10646-UCS-4 - Unicode 32-bit
ISO-10646-UCS-2 - Unicode 16-bit
Big5 - Taiwanese
GB2312 - Chinese
EUC-JP - Japanese
EUC-KR - Korean
US-ASCII - ISO-646-US
KOI8-R - Russian
Shift_JIS
Windows 874 - Thai
Windows 1250 - Central Europe
Windows 1251 - Cyrilic
Windows 1252 - Latin - 1
Windows 1253 - Greek
Windows 1254 - Turkish
Windows 1255 - Hebrew
Windows 1256 - Arabic
Windows 1257 - Baltic
Windows 1258 - Viet Nam
Avatar
Zazar
> tiens, un début de commencement à la réponse.
Unicode étant le sur ensemble qui contient tous les caracteres possibles


de
l'univers (lettres, kanjis...)



Il me semble que des Japonais se sont plaints parce qu'Unicode ne permettait
pas de représenter des vieux kanjis; les vieux textes ainsi que certains
noms de famille ne pouvaient donc pas être saisis sur ordinateur.

--
Zazar
Avatar
Bismark Prods
Ah c'est super ! Maintenant faudra que je jette un oeil sur google pour
avoir la signification de tous ca ! ...

Sur quelle page je trouve les petits ciseaux ? lol

"Ambassadeur Kosh" a écrit dans le message de
news:
tiens, un début de commencement à la réponse.
Unicode étant le sur ensemble qui contient tous les caracteres possibles


de
l'univers (lettres, kanjis...)
une bonne partie de tes questions auront réponse en parcourant System.Text

Unicode UTF-7
Unicode UTF-8
Unicode UTF-16
ISO-8859-1 - Latin 1/West European
ISO-8859-2 - Latin 2/Central European
ISO-8859-3 - Latin 3/South European
ISO-8859-4 - Latin 4/North European
ISO-8859-5 - Cyrillic
ISO-8859-6 - Arabic
ISO-8859-7 - Greek
ISO-8859-8 - Hebrew
ISO-8859-9 - Latin 5/Turkish
ISO-8859-11 - TIS-620/Thai
ISO-8859-14 - Latin 8
ISO-8859-15 - Latin 9
ISO-2022-JP
ISO-2022-KR
ISO-10646-UCS-4 - Unicode 32-bit
ISO-10646-UCS-2 - Unicode 16-bit
Big5 - Taiwanese
GB2312 - Chinese
EUC-JP - Japanese
EUC-KR - Korean
US-ASCII - ISO-646-US
KOI8-R - Russian
Shift_JIS
Windows 874 - Thai
Windows 1250 - Central Europe
Windows 1251 - Cyrilic
Windows 1252 - Latin - 1
Windows 1253 - Greek
Windows 1254 - Turkish
Windows 1255 - Hebrew
Windows 1256 - Arabic
Windows 1257 - Baltic
Windows 1258 - Viet Nam




1 2