天若有情

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

          關(guān)于J2EE中的亂碼解決

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

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

          首先,我們知道產(chǎn)生亂碼的原因是因?yàn)椴煌木幋a造成的,這就好比你和一個(gè)印地安人在說話,假設(shè)你完全不懂印第安語,而對方也不懂漢語,那你們所說的話,就會(huì)在對方的腦子里產(chǎn)生一個(gè)個(gè)的問號(hào)。那么怎么辦呢?通常的做法,就是找一個(gè)翻譯,在Java中,對編碼也是這樣的,來看一個(gè)例子
          方法一:

          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>
          這是一個(gè)簡單的提交頁面Deom01.html

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

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

          輸入內(nèi)容為:??
                
                 當(dāng)我們在頁面Deom01中輸入中文并提交好,發(fā)現(xiàn)提交后的顯示內(nèi)容為“?”號(hào),這里,就相當(dāng)于上面的不同語種的人說話一樣,產(chǎn)生了“?”號(hào),那么解決的辦法,就是通過轉(zhuǎn)換來解決這一問題:

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

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


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

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

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

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

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


          更改后運(yùn)行,發(fā)現(xiàn)結(jié)果和以前的一樣。

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


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

          Feedback

          # re: 關(guān)于J2EE中的亂碼解決  回復(fù)  更多評(píng)論   

          2008-07-31 03:12 by 深圳旅游資訊網(wǎng)
          謝謝

          # re: 關(guān)于J2EE中的亂碼解決  回復(fù)  更多評(píng)論   

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

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 嵩明县| 揭阳市| 张掖市| 蓬莱市| 蕉岭县| 陇南市| 那坡县| 大宁县| 丹巴县| 盖州市| 时尚| 周宁县| 辉县市| 锦屏县| 木里| 宁明县| 文山县| 台东市| 府谷县| 江油市| 霍山县| 临城县| 皮山县| 保定市| 迁安市| 华容县| 定陶县| 多伦县| 伊宁市| 新和县| 吉林省| 南宁市| 永仁县| 金华市| 安宁市| 盐源县| 贡嘎县| 浮山县| 二手房| 抚顺县| 东至县|