春風博客

          春天里,百花香...

          導航

          <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 閱讀(5223) 評論(1)  編輯  收藏 所屬分類: Ajax

          評論

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

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

          sitinspring(http://www.aygfsteel.com)原創,轉載請注明出處.
          主站蜘蛛池模板: 大连市| 罗定市| 娄底市| 宜宾县| 宝应县| 汾西县| 玛曲县| 库伦旗| 察哈| 化州市| 丹东市| 济宁市| 博湖县| 巴林左旗| 万源市| 攀枝花市| 盐城市| 浦城县| 新建县| 蒙城县| 徐汇区| 辽阳县| 新乡市| 泰和县| 珲春市| 平湖市| 漠河县| 宜兰县| 青神县| 新丰县| 融水| 昌邑市| 宁河县| 福泉市| 广饶县| 桓仁| 杭锦旗| 勃利县| 阳信县| 临颍县| 乌拉特中旗|