Java中浏览器的文件下载时文件名乱码问题
2013-04-16 21:51
267 查看
我最近在开发时遇到了文件另存为时文件名出现乱码,在火狐上正常的文件名,在IE中又出现乱码问题,然后好不容易在IE下调试好了文件名乱码问题,在火狐下又出现乱码,最后终于感觉这样是能解决了。具体如下:
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) { exceptionUtil.error("将文件名中的汉字转为UTF8编码的串时错误,输入的字符串为:" + s); 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(); } /** * 根据不同浏览器将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名. * * @param s * 原文件名 * @return 重新编码后的文件名 */ public static String toUtf8String(HttpServletRequest request, String s) { String agent = request.getHeader("User-Agent"); try { boolean isFireFox = (agent != null && agent.toLowerCase().indexOf("firefox") != -1); if (isFireFox) { s = new String(s.getBytes("UTF-8"), "ISO8859-1"); } else { s = StringUtil.toUtf8String(s); if ((agent != null && agent.indexOf("MSIE") != -1)) { // see http://support.microsoft.com/default.aspx?kbid=816868 if (s.length() > 150) { // 根据request的locale 得出可能的编码 s = new String(s.getBytes("UTF-8"), "ISO8859-1"); } } } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return s; }
相关文章推荐
- Java中浏览器的文件下载时文件名乱码问题
- java下载文件文件名针对不同浏览器乱码,文件名中存在括号等乱码问题
- 关于java文件下载文件名乱码问题解决方案
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- java 下载文件 兼容 ie 火狐 google 浏览器 ,解决下载文件乱码问题
- 整理java文件下载(中文乱码、火狐浏览器乱码、空格变+号、文件名包含空格时文件名可能显示不全等问题)
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- Java下载文件,文件名中文乱码问题
- 不同浏览器上中文文件名的下载/导出乱码问题(Java)
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 关于浏览器下载文件的文件名会出现乱码的问题
- jsp页面java+js实现文件下载(并附带解决下载文件名乱码问题-火狐浏览器正常访问)
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题
- 解决各大浏览器下载文件乱码以及Firefox下载文件名不全问题