Bonjour,
j'ai un souci avec les encodages et accentuations : pas dans les fichiers en eux mêmes mais dans le nom. Voici mon cas :
Je génère deux types de fichiers
- soit un .xls seul (par ex : té_12_02_2009.xls)
- soit un .zip avec plusieurs .xls (par ex : tous_les tés.zip contenant té_12_02_2009.xls, té_13_02_2009.xls)
Dans les deux cas, tout est généré à la volée.
Lorsque la boîte de dialogue arrive :
- le .xls seul devient tÃc_12_02_2009.xls

- le .zip devient tous_les tÃcs.zip

contenant té_12_02_2009.xls, té_13_02_2009.xls

En fait seuls les noms des fichiers à enregistrer sont mal encodés.
Pour ce qui est du code voici le bout concerné :
ZipOutputStream
zipOutputStream = null;
MemoryStream memoryStream = newMemoryStream();
StringBuilder stringBuilder = newStringBuilder();
//création des fichiers
foreach (DataView dataView in dataViews)
{
stringBuilder = newStringBuilder();
[...]
//du code type stringBuilder.Append('');
if (dataViews.Length > 1)
{
//ajout des fichiers grâce à #ZipLib
Crc32 crc = newCrc32();
ZipEntry entry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(ZipEntry.CleanName(NomFichierReglemente));
entry.DateTime = DateTime.Now;
byte[] buffer = System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(stringBuilder.ToString());
entry.Size = buffer.Length;
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
zipOutputStream.PutNextEntry(entry);
zipOutputStream.Write(buffer, 0, buffer.Length);
}
} // envoi dans la réponse
if (dataViews.Length == 1)
{
// un seul fichier .xls
page.Response.ContentType = "Application/x-msexcel";
page.Response.AddHeader("content-disposition", "attachment; filename=\"" + NomFichier + "\"");
page.Response.ContentEncoding = Encoding.GetEncoding("iso-8859-1");
page.Response.Write(stringBuilder.ToString());
}
elseif (dataViews.Length > 1)
{
//le zip de tous les .xls
zipOutputStream.Finish();
zipOutputStream.Flush();
page.Response.Clear();
page.Response.ContentType = "application/x-zip-compressed";
page.Response.ContentEncoding = Encoding.GetEncoding("iso-8859-1");
page.Response.AddHeader("content-disposition", "attachment; filename=\"" + NomFichier + "\"");
memoryStream.WriteTo(page.Response.OutputStream);
zipOutputStream.Close();
}
page.Response.End();
Merci d'avance pour vos réponses...