春風博客

          春天里,百花香...

          導航

          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          統計

          公告

          MAIL: junglesong@gmail.com
          MSN: junglesong_5@hotmail.com

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          Ajax中文處理亂碼問題總結

          亂碼是經常困擾非英語Web程序開發的程序員的問題,可喜的是網上的解決方案也不少,有從客戶端想辦法的,有從服務端想辦法的.本人收集了一些材料,總結出自認為比較容易輕松的方案如下,希望與大家一起探討.

          1.Jsp頁面正確顯示中文(其實這個不是Ajax的)
          頁首寫入:
                   <%@ page contentType="text/html; charset=UTF-8"%>
          <Title>后寫入:
                    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          這樣靜態中文就可以顯示了.

          2.Java解析XMLHttpRequest傳遞過來的中文.
          如果把中文直接放在URL中通過XMLHttpRequest傳到Servlet中,中文會變成"??",其實這時用下列函數轉一下碼即可:

          String type =StringUtil.getDecodeParamFromReq("type",request);// 取代了原來的request.getParameter("type");

          StringUtil類的完整代碼如下:
          package com.sitinspring.nnyy.util;

          import javax.servlet.http.HttpServletRequest;

          public final class StringUtil {
              
          private StringUtil() {

              }


              
          public static String getDecodeParamFromReq(String paramName,
                      HttpServletRequest request) 
          {
                  String retval 
          = request.getParameter(paramName);
                  
                  
          try {
                      
          // 中間用ISO-8859-1過渡
                      byte[] b = retval.getBytes("8859_1");

                      
          // 轉換成GB2312字符
                      retval = new String(b, "GB2312");
                  }
           catch (Exception e) {
                      e.printStackTrace();
                  }


                  
          return retval;
              }

          }

          此后type將得到正確的中文.

          3.Response如何傳出存在中文的xml
          很簡單,在Servlet的doPost函數首部書寫一下三句即可
          response.setContentType("text/xml;charset=UTF-8");
          response.setHeader(
          "Cache-Control""no-cache");
          response.setCharacterEncoding(
          "UTF-8");

          此后在js解析responseXML時也不需要escape函數的幫忙了.

          示例頁面:


          以上

          posted on 2007-09-21 13:53 sitinspring 閱讀(5213) 評論(1)  編輯  收藏 所屬分類: Ajax

          評論

          # re: Ajax中文處理亂碼問題總結 2007-09-21 15:19 千里冰封

          其實加個過濾器就可以了  回復  更多評論   

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 扶沟县| 宜春市| 绥宁县| 苏尼特左旗| 海淀区| 莆田市| 抚松县| 乌苏市| 哈巴河县| 宿迁市| 轮台县| 鄂托克前旗| 博兴县| 会宁县| 海安县| 韶山市| 嘉禾县| 平昌县| 巴中市| 平度市| 许昌县| 梧州市| 巴青县| 大化| 乌鲁木齐市| 北碚区| 苍梧县| 锡林浩特市| 孟连| 陇南市| 南丰县| 浮山县| 从江县| 杨浦区| 阜城县| 岳阳市| 高台县| 舞钢市| 同仁县| 汾西县| 梧州市|