Java下载文件时文件名乱码问题解决办法
时间:2023-08-23 17:37:03
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;
}
标签:下载,文件,乱码
0
投稿
猜你喜欢
Android开发基础简化Toast调用方法详解
2022-02-11 00:44:09
c#消息提示框messagebox的详解及使用
2022-06-25 14:57:44
Java环境配置图文教程(推荐)
2023-09-17 11:27:42
功能强大的Android滚动控件RecyclerView
2022-11-30 13:45:27
Jetpack Compose实现列表和动画效果详解
2022-07-16 21:14:44
SpringBoot在项目中访问静态资源步骤分析
2022-12-13 08:04:31
Android中使用ZXing生成二维码(支持添加Logo图案)
2023-12-24 21:34:58
Java垃圾回收器的方法和原理总结
2022-06-27 07:11:46
Mybatis动态调用表名和字段名的解决方法
2022-03-18 16:54:14
springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)
2023-05-25 18:53:29
Android游戏开发:实现手势操作切换图片的实例
2022-05-06 11:55:01
Android App调试内存泄露之Cursor篇
2023-11-22 03:36:29
Java ArrayList.toArray(T[]) 方法的参数类型是 T 而不是 E的原因分析
2023-01-07 04:22:29
详细聊聊如何在C#循环中捕获局部变量
2021-10-30 17:05:13
springboot整合mybatisplus的方法详解
2023-05-20 18:35:05
Spring Boot将项目打包成war包的操作方法
2022-01-02 22:30:50
Java实现图片倒影的源码实例内容
2022-08-30 02:39:24
Android studio 出现 Unsupported major.minor version 52.0解决办法
2023-12-01 18:30:53
Java日常练习题,每天进步一点点(41)
2023-05-18 18:10:02
kotlin gson反序列化默认值失效深入讲解
2022-04-07 15:28:59