我最近在开发时遇到了文件另存为时文件名出现乱码,在火狐上正常的文件名,在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实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让...通过以上步骤和注意事项,我们可以有效地实现Java中文件的下载功能,并且解决了中文文件名可能带来的乱码问题,提高了用户体验。
不同浏览器上中文文件名的下载乱码问题 浏览器IEChromeSafariOpera 浏览器能正确识别的编码格式
Java 文件下载文件名乱码问题是指在下载 Java 文件时,文件名出现乱码现象,影响下载文件的正确性。这种问题通常有两种情况:一是下载时中文文件名乱码,二是下载时因为路径中包含中文文件名乱码。本文将详细介绍 ...
解决WeLogic服务器中Struts2文件下载时的文件名乱码问题,需要综合考虑编码转换、Struts2配置以及Java代码实现等多方面因素。通过上述方法,可以有效避免文件名乱码,确保文件下载功能在WeLogic服务器环境下稳定运行...
在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...
当用户请求下载一个文件时,服务器需要设置响应头来指示浏览器如何处理这个响应。在JSP中,我们通常使用`response`对象来设置这些头信息。`response.setContentType("APPLICATION/OCTET-STREAM")`告诉浏览器这是一个...
文件下载时出现中文乱码的原因主要是由于浏览器对HTTP响应头中的`Content-Disposition`字段中文件名部分的解析方式不同。该字段通常用来指定下载文件的默认名称及展示方式(如内嵌或下载)。对于中文文件名而言,若...
本文将详细介绍如何在Java中处理导出文件时的文件名问题,确保用户能够正常下载带有中文或其他特殊字符的文件名。 #### 知识点一:理解文件名编码问题 在Web应用中,当服务器向客户端发送文件时,HTTP协议中会包含...
在Java应用中实现文件下载功能时,经常遇到的一个问题是输出文件名中的中文字符会出现乱码。这主要是因为HTTP协议在传输文件名时,默认使用的是ISO-8859-1编码,而中文字符在此编码下无法正确解析,从而导致乱码的...
往往开发环境和生产环境在环境部署时会遇到很多奇怪的问题,此次word文档下载就被卡住了,通过一番努力终于找到了原因,分享给大家。上传文件txt格式,内有方法详细的代码注释及原因说明,jar包比较常见,大家自行...
总结来说,通过设置正确的Content-Disposition响应头,并将文件名进行UTF-8编码,可以有效解决Web应用中文件下载时的中文文件名乱码问题。同时,根据文件类型设置正确的Content-Type响应头,以及考虑浏览器的兼容性...
总的来说,解决Java Web中IE11下载文件时的乱码问题,需要对HTTP协议、字符编码以及Servlet有深入的理解。通过正确设置`Content-Disposition`响应头,并结合URL编码,可以确保文件名在不同浏览器中的一致性。这个...
总的来说,解决Java下载文件时的文件名乱码问题,需要理解HTTP协议和浏览器对文件名编码的处理差异,以及利用适当的编码转换方法,确保在所有支持的浏览器中都能正确显示和保存文件名。在编写代码时,一定要注意兼容...
在IT行业中,文件管理和下载是常见的操作,尤其是在处理包含中文字符的文件时,可能会遇到乱码问题。本文将深入探讨“文件下载”以及如何解决文件名中文乱码问题,这在处理多语言环境下的数据交流时显得尤为重要。 ...
在Java编程中,文件下载是常见的任务之一,特别...通过以上步骤,你可以实现一个基本的Java文件下载功能,并解决中文文件名乱码的问题。对于更复杂的应用场景,如大文件分块下载、断点续传等,还需要进一步优化和扩展。
本文将详细介绍如何使用Java实现将数据导出为Excel文件,并且能够被浏览器正确下载,同时解决中文乱码问题。 #### 技术选型 为了实现这一目标,我们主要采用以下技术栈: - **服务器端**:Java Servlet API,用于...
标题中的“jspSmartUpload上传中文文件名乱码问题”是一个常见的技术挑战,特别是在处理Web应用程序时,特别是那些涉及用户上传文件的场景。JSP Smart Upload是早期流行的一个用于Java Web应用的文件上传组件,它...
4. 文件名编码转换:对于文件名乱码,可以使用专门的工具进行转换,如“File Renamer”或“Advanced Renamer”,这些工具能帮助批量转换文件名的编码。 5. 操作系统设置:在Windows系统中,可以通过修改注册表或者...