webForumDet fria alternativet

Problem med svenska tecken

.NET

6 svar · 1 430 visningar · startad av lilja

Medlem sedan juli 20041 183 inlägg
Frågan#1

Jag har försökt med en massa olika alternativ men inget fungerar. Jag försöker returnera en fil som ligger sparad i en ms sql databas. Det enda som krånglar är filnamnet.

ProcessAttachmentIdentifier id = new ProcessAttachmentIdentifier(Request.QueryString["id"]);
ProcessAttachment attachment = new ProcessAttachment(this.InitializationObject, id);

//Response.Charset = "UTF-8";
//Response.ContentEncoding = Encoding.UTF8;// Encoding.GetEncoding("UTF-8");

//Response.Charset = "ISO-8859-1";
//Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1");

if(attachment.MimeType.Length > 0) {
	Response.ContentType = attachment.MimeType;
}
Response.AddHeader("content-disposition","inline; filename=" + attachment.Title);
attachment.WriteTo(Response.OutputStream);

Response.Flush();

Sidan är skapad i Visual Studio och är "Western European Codepage 1252" men jag har också testat "Unicode (UTF-8)". Jag har testat olika charset och contentencoding som ni ser bortkommenterade ovan. Databasen är MS SQL och har "SQL_Latin1_General_CP1_CI_AS".

Det enda sidan returnerar är det från koden ovan.

Någon som har något nytt jag kan pröva? :)

Medlem sedan juni 20004 308 inlägg
#2

Jag är ingen klippa på ASP.NET, men från andra språk kan jag gissa mig till att headern borde se ut så här;

Response.AddHeader("content-disposition","inline; filename=""" + Server.URLEncode(attachment.Title)+"""");

Alltså, filnamnet citat-avgränsat och i formatet Filnamn%20med%20mellanslag.

Medlem sedan juli 20041 183 inlägg
#3

Jojoxx skrev:

Jag är ingen klippa på ASP.NET, men från andra språk kan jag gissa mig till att headern borde se ut så här;

Response.AddHeader("content-disposition","inline; filename=""" + Server.URLEncode(attachment.Title)+"""");

Alltså, filnamnet citat-avgränsat och i formatet Filnamn%20med%20mellanslag.

Tack! Nästan rätt. Alla mellanslag blir plustecken. Känns ändå som att vi är något på spåren här :)

Medlem sedan juli 20041 183 inlägg
#4

Jag testade i Firefox nu och då blir å, like med %c3%a5%2c

Medlem sedan juni 20004 308 inlägg
#5

Kan hända att det fixas automatiskt i ASP.NET, prova att bara citat-avgränsa filnamnet. (Ta bort Server.URLEncode)

Response.AddHeader("content-disposition","inline; filename=""" + attachment.Title+"""");
Medlem sedan maj 2009250 inlägg
#6

Använd HttpUtility.UrlEncode i ASP.Net så får du åäö korrekt

Medlem sedan maj 2009250 inlägg
#7

och givetvis dess motpart HttpUtility.UrlDecode

253 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)