天若有情

          到教堂懺悔,愿主安撫我罪惡的心靈......
          posts - 4, comments - 35, trackbacks - 0, articles - 24

          關于J2EE中的亂碼解決

          Posted on 2008-07-31 01:13 freedoom 閱讀(1798) 評論(2)  編輯  收藏

          在J2EE中,亂碼問題是一個令人頭痛的問題,本文就J2EE中的亂碼做一個小結,以求拋磚引玉。

          首先,我們知道產生亂碼的原因是因為不同的編碼造成的,這就好比你和一個印地安人在說話,假設你完全不懂印第安語,而對方也不懂漢語,那你們所說的話,就會在對方的腦子里產生一個個的問號。那么怎么辦呢?通常的做法,就是找一個翻譯,在Java中,對編碼也是這樣的,來看一個例子
          方法一:

          1<html>
          2<body>
          3    <form action="demo02.jsp" method="post">
          4        用戶名:<input type="text" name="uname">
          5            <input type="submit" value="go">
          6    </form>
          7</body>
          8</html>
          這是一個簡單的提交頁面Deom01.html

          <%@page contentType="text/html;charset=gbk" %>
          <html>
          <body>

          <h1>輸入內容為:<%=request.getParameter("uname")%></h1>
          </body>
          </html>
               
          以上是一個對Deom01.html進行處理的JSP頁面,其作用是為了取出Demo01的Uname值并顯示,

          輸入內容為:??
                
                 當我們在頁面Deom01中輸入中文并提交好,發現提交后的顯示內容為“?”號,這里,就相當于上面的不同語種的人說話一樣,產生了“?”號,那么解決的辦法,就是通過轉換來解決這一問題:

          <%@page contentType="text/html;charset=gbk" %>
          <html>
          <body>
          <% 
              
          /*String name=request.getParmaeter("uname");//取得uname的值
              byte[] b=name.getBytes("ISO8859-1");//將取得的值轉換為Byte數組
              name=new String(b);//將Byte數組重新轉換為所需要的格式
              
          */

              String  name
          =new String(request.getParameter("uname").getBytes("ISO8859-1"));//這里等同于上面
          %>
          <h1>輸入內容為:<%=uname%></h1>
          <%-- <h1>輸入內容為:<%=request.getParameter("uname")%></h1> --%>
          </body>
          </html>


          以上通過將取得的uname值轉換為Byte數組,再將Byte數組轉換為所需要的格式來進行轉換,從而解決了亂碼問題。

          方法二:
          設置統一的字符編碼
          在API中的Javax.servlet.http包下,有一個HttpServletRequest接口中,有這樣一個方法
          public void setCharacterEncoding(String env)
                           
          throws
           UnsupportedEncoding

          其作用是設置統一的字符編碼
          <%@page contentType="text/html;charset=gbk" %>
          <html>
          <body>
          <% 
              
          /*String name=request.getParmaeter("uname");//取得uname的值
              byte[] b=name.getBytes("ISO8859-1");//將取得的值轉換為Byte數組
              name=new String(b);//將Byte數組重新轉換為所需要的格式
              
          */

              
          //String  name=new String(request.getParameter("uname").getBytes("ISO8859-1"));//這里等同于上面
              request.setCharacterEncoding("GBK");
              String name=request.getParameter("uname");
          %>

          <h1>輸入內容為:<%=name%></h1>
          <%-- <h1>輸入內容為:<%=request.getParameter("uname")%></h1> --%>
          </body>
          </html>


          更改后運行,發現結果和以前的一樣。

          (注:GBK的范圍大于GB2312 ,GB2312僅指簡體中文,而GBK不僅指簡體中文,還包含了繁體中文等中文。)


          以上內容參考李興華老師教程編寫,并引用了其列程,在此感謝李興華老師制作的視頻,給了我很大幫助(本人無意作廣告,此舉真誠感謝李興華老師的視頻,另外,也向初學JAVA的朋友推薦他的視頻,還有那些準備上JAVA培訓班的同學,希望你們在上培訓班之前好好看看李老師的教程,本人是在一家知名培訓機構里接受過培訓的。)

          Feedback

          # re: 關于J2EE中的亂碼解決  回復  更多評論   

          2008-07-31 03:12 by 深圳旅游資訊網
          謝謝

          # re: 關于J2EE中的亂碼解決  回復  更多評論   

          2008-08-01 02:04 by 酒店咨詢
          謝謝,

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 靖远县| 万宁市| 拜泉县| 达州市| 淳化县| 墨竹工卡县| 黑河市| 孟津县| 梨树县| 锡林郭勒盟| 江门市| 兰溪市| 芷江| 云阳县| 靖宇县| 宣威市| 东明县| 祁连县| 宾川县| 乌拉特后旗| 台东市| 江阴市| 绥江县| 育儿| 登封市| 清镇市| 乌鲁木齐县| 苍山县| 武安市| 新巴尔虎左旗| 岳普湖县| 库伦旗| 诸暨市| 连江县| 灯塔市| 依兰县| 马公市| 罗平县| 宁都县| 冀州市| 维西|