春風(fēng)博客

          春天里,百花香...

          導(dǎo)航

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

          統(tǒng)計(jì)

          公告

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

          Locations of visitors to this page

          常用鏈接

          留言簿(11)

          隨筆分類(224)

          隨筆檔案(126)

          個(gè)人軟件下載

          我的其它博客

          我的鄰居們

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

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

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

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

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

          String type =StringUtil.getDecodeParamFromReq("type",request);// 取代了原來(lái)的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過(guò)渡
                      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
          很簡(jiǎn)單,在Servlet的doPost函數(shù)首部書(shū)寫(xiě)一下三句即可
          response.setContentType("text/xml;charset=UTF-8");
          response.setHeader(
          "Cache-Control""no-cache");
          response.setCharacterEncoding(
          "UTF-8");

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

          示例頁(yè)面:


          以上

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

          評(píng)論

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

          其實(shí)加個(gè)過(guò)濾器就可以了  回復(fù)  更多評(píng)論   

          sitinspring(http://www.aygfsteel.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.
          主站蜘蛛池模板: 绥芬河市| 满洲里市| 渭源县| 明溪县| 清原| 福建省| 青浦区| 虞城县| 彭州市| 志丹县| 宜君县| 桃园县| 朔州市| 定兴县| 丹东市| 中西区| 广南县| 平果县| 巩义市| 古田县| 康保县| 大渡口区| 界首市| 阿瓦提县| 乐昌市| 武平县| 荥经县| 邯郸市| 莱芜市| 迭部县| 广灵县| 郑州市| 揭阳市| 新巴尔虎右旗| 二连浩特市| 乌兰县| 吴江市| 磐安县| 浠水县| 通城县| 贵南县|