Response.setheader ("Content-disposition", "attachment; Filename= "+ filename+". xls ");
If file. The name is Chinese and is garbled. The solution is
Method 1:
Response.setheader ("Content-disposition", "attachment; Filename= "+ java.net.URLEncoder.encode (fileName," UTF-8 "));
Download the program has the above sentence, generally in the IE6 download prompt box will correctly display the name of the file, whether it is Simplified Chinese, or Japanese. However, if the text is more than 17 words, it cannot be downloaded.
First, through the original way, that is, using Urlencoder encoding, when the Chinese characters more than 17, IE6 cannot download the file. This is the bug of IE, see Microsoft Knowledge Base article KB816868. The reason may be that when IE handles the Response header, the length of the header is limited to about 150 bytes. and a Chinese character coding into a UTF-8 is 9 bytes, then 17 words is 153 bytes, so will be an error. And not with the suffix is wrong.
Method 2:
Response.setheader ("Content-disposition", "attachment;filename=" + New String (Filename.getbytes ("gb2312"), " Iso8859-1 "));
In the case that the attachment file name is Simplified Chinese text, then this method is really the most effective, do not allow customers to upgrade ie. If Taiwan compatriots use it, they can change the gb2312 into Big5. But today's systems are often joined by the internationalization of support, generally using UTF-8. If you have simplified Chinese text in the file name, there is also traditional English, and Japanese. Then the garbled will be produced. In addition, on the Firefox (v1.0-en) download is garbled.
<%@ page import= "java.io.*"%>
<%@ page import= "java.util.*"%>
<%@ page contenttype= "TEXT/HTML;CHARSET=GBK"%>
<%
String key = Request.getparameter ("key");
String title = Request.getparameter ("file");
if (title = = null) title= "download_table";
Title + = ". xls";
System.out.println ("Jilnjjhxjkhjhjhjhj" +title);
if (key! = null &&!key.equals (""))
{
Response.setcontenttype ("Application/x-msdownload");
Response.setheader ("Content-type", "application/x-msdownload");
Response.setheader ("accept-ranges", "bytes");
Response.setheader ("Content-disposition", "attachment; Filename=" + java.net.URLEncoder.encode (title, "UTF-8"));
String str = (string) session.getattribute (key);
OutputStream OS = Response.getoutputstream ();
String Header = ""<meta http-equiv=\" content-type\ "content=\" Text/html;charset=gbk\ ">\n" +
"<meta name=progid content=excel.sheet>\n" +
"<style>\n" +
"<!--\ n" +
"A {\ n" +
"Font-size:9pt;\n" +
"Color:navy;\n" +
"Text-decoration:none;\n" +
"}\n" +
"A:hover {\ n" +
"Font-size:9pt;\n" +
"Color:darkorange;\n" +
"Text-decoration:underline;\n" +
"}\n" +
"-->\n" +
"</style>\n" +
""<body>\n";
Os.write (Header.getbytes ("GBK"));
Os.write (Str.getbytes ("GBK"));
Os.write ("</body>Os.flush ();
Os.close ();
Session.removeattribute (key);
Return
}
Else
{
Session.removeattribute (key);
%>
<!--
/*****************************************************************************
* Function:
* Version 1.0
* Author:leo Leo.chou decay@163.com
* Create time:2006.06.01
* can copy and/or use and/or modify this program Free,but
* the segment above. Please mail me question, good day!
*****************************************************************************
*/
-
<meta http-equiv= "Content-type" content= "text/html; CHARSET=GBK ">
<title></title><body bgcolor= "#F0FAFF" text= "#FF8040" marginwidth= "0" marginheight= "0" leftmargin= "5" topmargin= "1" >
<script language= "JavaScript" >
<!--
Alert ("Download tab error. ");
-
</script>
</body><%
Return
}
%>