ASP Classic properly handling file saving with UTF-8

lordyersazjw85

New Member
On my web email server, users can download attachments off their email. When they receive a file name that is not in English, the text gets broken in IE 8/9, but it comes out totally fine in Chrome/Firefox. Here is the code that currently handles the download:\[code\]<% attachfile = request("file")%><% files = Split(attachfile,"\") Set fso = CreateObject("Scripting.FileSystemObject") Response.Clear 'Response.CharSet="UTF-8" Response.ContentType = "application/unknown" Response.AddHeader "Pragma", "no-cache" Response.AddHeader "Expires", "0" Response.AddHeader "Content-Transfer-Encoding", "binary" Response.AddHeader "Content-Disposition","attachment; filename = " & files(Ubound(files)) Set objStream = Server.CreateObject("ADODB.Stream") objStream.Open objStream.Type = 1 objStream.LoadFromFile attachfile Response.BinaryWrite objStream.Read Response.Flush objStream.Close : Set objStream = nothing Set fso = Nothing%></BODY></HTML>\[/code\]So then I changed how the filename was being passed in the content-disposition to the following, hoping in vain that it would encode the string in UTF-8 correctly before saving on the client's computer:\[code\]Response.AddHeader "Content-Disposition","attachment; filename = " & Server.URLEncode(files(Ubound(files))) \[/code\]Now I've solved one problem but I am faced with two new problems -_-The first problem is that filename no longer gets broken when I download the file in IE 8/9 but it adds a weird [1] or [2] at the end of the file extension. So if I had ?? 1.docx, IE would save the document as ?? 1.docx[1]The second problem is that in chrome, the browser takes the UTF-8 encoded string literally so it gets saved as ??%20%1.docx. Note that the non-english part of the file is displayed properly but the empty space shows up as Unicode Character Code 20. How do I go about solving this issue?
 
Back
Top