加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java下载文件时文件名乱码问题解决办法

发布时间:2020-12-14 19:47:41 所属栏目:Java 来源:网络整理
导读:复制代码 代码如下: 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.toS
复制代码 代码如下:

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技术实现上传下载文件到FTP服务器(完整)
  • Java通过FTP服务器上传下载文件的方法
  • Java Spring MVC 上传下载文件配置及controller方法详解
  • java操作ftp下载文件示例
  • 使用java实现http多线程断点下载文件(一)
  • Javaweb实现上传下载文件的多种方法
  • 使用java实现http多线程断点下载文件(二)
  • java webservice上传下载文件代码分享
  • java 从服务器下载文件并保存到本地的示例
  • java后台批量下载文件并压缩成zip下载的方法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读