欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java下載文件時文件名亂碼問題解決辦法

 更新時間:2013年04月16日 22:07:52   作者:  
我最近在開發(fā)時遇到了文件另存為時文件名出現(xiàn)亂碼,在火狐上正常的文件名,在IE中又出現(xiàn)亂碼問題,然后好不容易在IE下調(diào)試好了文件名亂碼問題,在火狐下又出現(xiàn)亂碼,最后終于感覺這樣是能解決了。具體如下:
復制代碼 代碼如下:

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();
         }

         /**
          * 根據(jù)不同瀏覽器將文件名中的漢字轉為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) {
                             // 根據(jù)request的locale 得出可能的編碼
                             s = new String(s.getBytes("UTF-8"), "ISO8859-1");
                         }
                     }
                 }
             } catch (UnsupportedEncodingException e) {
                 e.printStackTrace();
             }
             return s;
         }

相關文章

  • 詳解PipedInputStream和PipedOutputStream_動力節(jié)點Java學院整理

    詳解PipedInputStream和PipedOutputStream_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了管道PipedInputStream和PipedOutputStream,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實例

    Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實例

    這篇文章主要介紹了Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實例,Swing是一個用于開發(fā)Java應用程序用戶界面的開發(fā)工具包,需要的朋友可以參考下
    2014-10-10
  • SpringBoot中RestTemplate的使用詳解

    SpringBoot中RestTemplate的使用詳解

    這篇文章主要介紹了SpringBoot中RestTemplate的使用詳解,RestTemplate是由Spring框架提供的一個可用于應用中調(diào)用rest服務的類它簡化了與http服務的通信方式,統(tǒng)一了RESTFul的標準,封裝了http連接,我們只需要傳入url及其返回值類型即可,需要的朋友可以參考下
    2023-10-10
  • Mybatis調(diào)用視圖和存儲過程的方法

    Mybatis調(diào)用視圖和存儲過程的方法

    MyBatis支持普通sql的查詢、視圖的查詢、存儲過程調(diào)用,是一種非常優(yōu)秀的持久層框架。接下來通過本文給大家介紹mybatis調(diào)用視圖和存儲過程的方法,感興趣的朋友一起看看吧
    2016-10-10
  • Java中的Callable實現(xiàn)多線程詳解

    Java中的Callable實現(xiàn)多線程詳解

    這篇文章主要介紹了Java中的Callable實現(xiàn)多線程詳解,接口Callable中有一個call方法,其返回值類型為V,這是一個泛型,值得關注的是這個call方法有返回值,這意味著線程執(zhí)行完畢后可以將處理結果返回,需要的朋友可以參考下
    2023-08-08
  • 詳細了解java監(jiān)聽器和過濾器

    詳細了解java監(jiān)聽器和過濾器

    下面小編就為大家?guī)硪黄趈ava servlet過濾器和監(jiān)聽器(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • java讀取excel文件并復制(copy)文件到指定目錄示例

    java讀取excel文件并復制(copy)文件到指定目錄示例

    這篇文章主要介紹了java讀取excel文件并復制文件到指定目錄示例,需要的朋友可以參考下
    2014-02-02
  • Netty中ChannelPoolHandler調(diào)用處理程序詳解

    Netty中ChannelPoolHandler調(diào)用處理程序詳解

    這篇文章主要介紹了Netty中ChannelPoolHandler調(diào)用處理程序詳解,Netty 是基于 Java NIO 的異步事件驅動的網(wǎng)絡應用框架,使用 Netty 可以快速開發(fā)網(wǎng)絡應用,Netty 提供了高層次的抽象來簡化 TCP 和 UDP 服務器的編程,但是你仍然可以使用底層的 API,需要的朋友可以參考下
    2023-11-11
  • java的Array,List和byte[],String相互轉換的方法你了解嘛

    java的Array,List和byte[],String相互轉換的方法你了解嘛

    這篇文章主要為大家詳細介紹了java的Array,List和byte[],String相互轉換的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 一文詳解Springboot集成mybatis-plus

    一文詳解Springboot集成mybatis-plus

    這篇文章主要介紹了Mybatis-Plus與SpringBoot整合,并在項目中實戰(zhàn)運用,列舉其增刪改查的使用方式,對學習或工作有一定的幫助,需要的小伙伴可以參考閱讀
    2023-04-04

最新評論