| 关键词: nbsp fileName utf-8 response String toUtf8String StringBuffer Disposition attachment setHeader |
问题描述:Java应用下载文件功能,输出文件名中的中文乱码 测试环境:tomcat,websphere6.1 方法一: response.setContentType("application/x-download"); fileName = URLDecoder.decode(fileName, "utf-8"); fileName= java.net.URLEncoder.encode(fileName,"utf-8"); response.setHeader("Content-Disposition", "attachment; filename=\""+ new String((fileName + ".zip").getBytes(),"UTF-8") +"\""); 方法二: response.setHeader("Content-Disposition", "attachment;filename=" + toUtf8String(filename)); public static String toUtf8String(String s) { StringBuffer sb = new StringBuffer(); for (int i=0;i<s.length();i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { byte[] b; try { b = Character.toString(c).getBytes("utf-8"); } catch (Exception ex) { log.error(ex); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k).toUpperCase()); } } } return sb.toString(); } 本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名孙镜涛(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|