文件下載中文文件名亂碼(轉(zhuǎn))

          B/S應(yīng)用中,下載一個(gè)附件保存時(shí),中文文件名會(huì)亂碼,在實(shí)際開(kāi)發(fā)中經(jīng)常遇到,現(xiàn)貼出C#和JAVA的解決方法:

          C#:

          Response.AppendHeader("Content-Disposition", "attachment;filename=" + Tools.toUtf8String(result));

           

          其中用到的轉(zhuǎn)換方法:

           1public static String toUtf8String(String s)
           2        {
           3            StringBuilder sb = new StringBuilder();
           4            for (int i=0;i<s.Length;i++)
           5            {
           6                char c = s[i];
           7                if (c >= 0 && c <= 255)
           8                {
           9                    sb.Append(c);
          10                }

          11                else
          12                {
          13                    byte[] b;
          14                    try
          15                    {
          16                     b = Encoding.UTF8.GetBytes(c.ToString());
          17                    }

          18                    catch (Exception ex)
          19                    {
          20                        b = new byte[0];
          21                    }

          22                    for (int j = 0; j < b.Length; j++)
          23                    {
          24                        int k = b[j];
          25                        if (k < 0) k += 256;
          26                       
          27                        sb.Append("%" + Convert.ToString(k,16).ToUpper());
          28                    }

          29                }

          30            }

          31            return sb.ToString();
          32        }

          33
          34

           

          JAVA:

          resp.addHeader("Content-Disposition","attachment;filename=" + Tools.toUtf8String(m_entityIndex.m_sName) + ".xls");

          其中用到的轉(zhuǎ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 
          = 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();
              }


          posted on 2009-01-22 15:15 jumliang 閱讀(557) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆檔案(4)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 林州市| 平乐县| 仁布县| 巫山县| 大竹县| 伊春市| 通海县| 瑞金市| 达孜县| 五寨县| 长垣县| 天台县| 达州市| 耒阳市| 峨眉山市| 拉萨市| 九江市| 昆山市| 连南| 无锡市| 商河县| 介休市| 谢通门县| 娄底市| 牙克石市| 阳城县| 湘潭县| 泰来县| 通江县| 东乌珠穆沁旗| 老河口市| 萝北县| 平顶山市| 抚宁县| 内黄县| 威信县| 同德县| 连云港市| 玉山县| 炉霍县| 凯里市|