下载文件时出现文件名乱码怎么办
来源:爱站网时间:2019-04-22编辑:网友分享
我们在不同的工程部署环境,不同的浏览器下载的附近,其编码方式是不同的,当下载文件时出现文件名乱码怎么办呢?
我们在不同的工程部署环境,不同的浏览器下载的附近,其编码方式是不同的,当下载文件时出现文件名乱码怎么办呢?
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使用数据创建对象的函数相关知识点,现在就由技术小编给你们分享下,如果你正在编写这个程序,又刚好遇阻,相信你看完下面文章内容一定会豁然开朗的,一起看看吧!
-
怎么将Sql Server存储过程迁移到Java
怎么将Sql Server存储过程迁移到Java,有兴趣了解这个问题的小伙伴一定要看看下面这篇文章,小编在此进行了详细说明,希望可以帮助到你们,并在从中获取知识。
-
Java编程中用户输入数组的方法
这篇文章主要介绍了Java编程中用户输入数组的方法内容,具体的问题描述和解决思路,技术小编都给你们详细整理出来了,如果你需要处理这个问题,随时都能来查看下面这篇文章。
-
重新创建GUI详情
爱站技术频道小编今天来教一教大家重新创建GUI的详细内容,如果你需要学习了解,不妨看看这篇文章,里面提供了很多实用的知识知识点,希望对你日后进行这方面的操作有帮助。
-
Java编程中实现UDP和TCP的方法
Java编程中实现UDP和TCP的方法内容就让小编来给朋友们说一说吧,这里提供了最简单通俗的内容给朋友们参考,感兴趣的话就随着技术小编来一探究竟下。