webForumDet fria alternativet

Problem med svenska tecken

6 svar · 1 428 visningar · startad av lilja

liljaMedlem sedan juli 20041 183 inlägg
#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? :)

JojoxxMedlem 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.

liljaMedlem 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 :)

liljaMedlem sedan juli 20041 183 inlägg
#4

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

JojoxxMedlem 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+"""");
johaseoMedlem sedan maj 2009250 inlägg
#6

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

johaseoMedlem sedan maj 2009250 inlägg
#7

och givetvis dess motpart HttpUtility.UrlDecode

129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)