2014年3月31日

[JAVA] 解決下載檔案中文檔名顯示異常

方法1
String fileName = new String(fileName.getBytes(), "ISO8859-1");  
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);



方法2(ie11後失效==)
//判對MSIE 使用URLEncoder.encode()  Firefox 使用BCodec.encode()
if (request.getHeader("User-Agent").indexOf("MSIE") != -1) {
    response.setHeader("Content-Disposition",
"" + openType + "; filename=\"" + URLEncoder.encode(filename, "UTF-8") + "\"");
} else {
    try {
        response.setHeader("Content-Disposition",
    "" + openType + "; filename=\"" + new BCodec().encode(filename, "UTF-8") + "\"");
    } catch (EncoderException ex) {
        ex.printStackTrace();
    }

1 則留言:

  1. IE 11 失效是因為他的Engine換Trident
    //判斷式:
    request.getHeader("User-Agent").contains("Trident")
    //編碼同舊IE
    FileName = java.net.URLEncoder.encode(FileName, "UTF-8");

    回覆刪除