春風博客

          春天里,百花香...

          導航

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

          統(tǒng)計

          公告

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

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          Ajax中文處理亂碼問題總結(jié)

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

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

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

          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");

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


                  
          return retval;
              }

          }

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

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

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

          示例頁面:


          以上

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

          評論

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

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

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請注明出處.
          主站蜘蛛池模板: 镇原县| 塔河县| 武强县| 吉林市| 德惠市| 洱源县| 三亚市| 滁州市| 九寨沟县| 嘉善县| 聊城市| 杂多县| 新河县| 郯城县| 漳浦县| 定州市| 海伦市| 宜兴市| 江门市| 洪江市| 德保县| 柳州市| 宁陕县| 兴仁县| 饶平县| 蒙山县| 南昌县| 峨山| 日土县| 宝丰县| 合江县| 祁门县| 广安市| 勃利县| 西充县| 嘉黎县| 和田市| 灯塔市| 通山县| 宜君县| 松潘县|