首页 > 代码库 > 文件下载中文文件名乱码
文件下载中文文件名乱码
B/S应用中,下载一个附件保存时,中文文件名会乱码,在实际开发中经常遇到,现贴出C#和JAVA的解决方法:
C#:
Response.AppendHeader("Content-Disposition", "attachment;filename=" + Tools.toUtf8String(result));
其中用到的转换方法:
public static string ToUtf8String(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.Length; i++) { char c = s[i]; if (c >= 0 && c <= 255) { sb.Append(c); } else { byte[] b; try { b = Encoding.UTF8.GetBytes(c.ToString()); } catch (Exception ex) { b = new byte[0]; } for (int j = 0; j < b.Length; j++) { int k = b[j]; if (k < 0) k += 256; sb.Append("%" + Convert.ToString(k, 16).ToUpper()); } } } return sb.ToString(); }
JAVA:
resp.addHeader("Content-Disposition","attachment;filename=" + Tools.toUtf8String(m_entityIndex.m_sName) + ".xls");
其中用到的转换方法:
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 = new Character(c).toString().getBytes("utf-8"); //b = Character.toString(c).getBytes("utf-8"); } catch (Exception ex) { System.out.println(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(); }
文件下载中文文件名乱码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。