`
sun4love
  • 浏览: 227879 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

zk下载文件中文乱码解决方案

阅读更多

 

本文来自http://sun4love.iteye.com/blog/1068254 转载请注明

 

IE,chrome,ff,opera测试通过

 

/**
 * User: sunflower
 * Date: 11-6-2
 * Time: 上午10:45
 */
public class IndexController extends GenericForwardComposer {
    public void onDownfile() {
        try {
            String charset = "UTF-8";
            //服务器文件名
            String fileName = "Sip坐席通讯协议.txt";
            //编码后文件名
            String encodedName = null;
            encodedName = URLEncoder.encode(fileName,charset);
            //将空格替换为+号
            encodedName =encodedName.replace("%20","+");

            HttpServletRequest httpRequest =(HttpServletRequest) Executions.getCurrent().getNativeRequest();
            //解决ie6 bug 或者是火狐浏览器
            if (encodedName.length() > 150
                    ||Servlets.isGecko(httpRequest)
                    ||Servlets.isGecko3(httpRequest)) {
                encodedName = new String(fileName.getBytes(charset), "ISO8859-1");
            }
            Filedownload.save(new FileInputStream(ZkUtils.getRealPath("/" + fileName)),
                    "application/octet-stream", encodedName);
        } catch (Exception e) {
        }
    }
}
0
0
分享到:
评论
2 楼 major361 2011-10-01  
我直接修改了org.zkoss.web.servlet.http包底下的Https类的encodeFilename方法也可以解决这个问题.
    private static String encodeFilename(String flnm) {
        String filename = Strings.escape(flnm, "\"") ;
        [color=red]try {
            filename =URLEncoder.encode(filename, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }[/color]
        return '"' + filename+ '"';
    }


我用的是zk-5.0.5版本.
1 楼 sokoo108 2011-08-05  
你这也是一种方式,我也留下我的一种处理方式吧:


Execution ex = Executions.getCurrent();
HttpServletRequest request = (HttpServletRequest) ex.getNativeRequest();
if (request.getHeader("User-Agent").indexOf("MSIE") != -1) {// ie
docFilename = URLEncoder.encode(docFilename, "UTF-8");
} else {// firefox
docFilename = MimeUtility.encodeText(docFilename, "GBK", "B");
}

相关推荐

Global site tag (gtag.js) - Google Analytics