File.open avec un fichier texte
Le
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;
}
}
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;
}
}

Poser une question


"Steeve" news:%
textes
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
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:
textes
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.
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
"Zazar" de news:
dire
caractère
correspondance
l'écrire
se
est
alors
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