[轉(zhuǎn)載]J2EE.Web應(yīng)用中文問(wèn)題解決方案

          對(duì)于一個(gè)Java初學(xué)者來(lái)說(shuō),經(jīng)常碰到的一個(gè)問(wèn)題恐怕就是中文問(wèn)題了。其實(shí)很正常,我們有幾千年的悠久歷史嘛,博大精深,豈能是小小的計(jì)算機(jī)語(yǔ)言所能包容的?呵呵,開個(gè)玩笑。但是不可否認(rèn)的一個(gè)事實(shí)就是,就算是一個(gè)比較有經(jīng)驗(yàn)的開發(fā)人員,也經(jīng)常面對(duì)著屏幕上的亂碼而大傷腦筋。

            想究其原因、徹底解決這一問(wèn)題嗎?follow me……

          亂碼原因
            java內(nèi)核是unicode的。但Java總是根據(jù)操作系統(tǒng)的默認(rèn)編碼字符集來(lái)決定字符串的初始編碼,而且Java系統(tǒng)的輸入和輸出的都是采取操作系統(tǒng)的默認(rèn)編碼,而數(shù)據(jù)庫(kù)、文件、網(wǎng)絡(luò)傳輸中的字節(jié)流……采用的編碼更是各不相同。所以不可避免的就會(huì)出現(xiàn)煩人的亂碼問(wèn)題了。

          解決辦法
            1、GB2312、GBK、Unicode(UTF8)?
            從字符集的大小比較 GB2312 < GBK < UTF8,很顯然,如果我們采用UTF8作為系統(tǒng)編碼的話,是不會(huì)有錯(cuò)的。而且如果你要考慮國(guó)際化的話,UTF8似乎是你唯一的選擇
            2、開發(fā)和編譯代碼時(shí)指定字符集為UTF-8
            JBuilder和Eclipse都可以在項(xiàng)目屬性中設(shè)置。
            3、使用過(guò)濾器
            編寫過(guò)濾器
          package?com.javer.test.language;

          import?javax.servlet.Filter;
          import?javax.servlet.FilterChain;
          import?javax.servlet.FilterConfig;
          import?javax.servlet.ServletRequest;
          import?javax.servlet.ServletResponse;

          /**
          *?<p>Title:?EncodingFilter</p>
          *?
          @author?javer(QQ:84831612)
          *?
          @version?1.0
          *?
          @link?http://blog.csdn.net/java008?
          */

          public?class?EncodingFilter
          implements?Filter
          {
          FilterConfig?config;

          public?void?init(FilterConfig?parm1)
          throws?javax.servlet.ServletException
          {
          this.config?=?parm1;
          }


          public?void?doFilter(ServletRequest?req,?ServletResponse?res,?FilterChain?chain)
          throws?java.io.IOException,?javax.servlet.ServletException
          {
          if?(req.getCharacterEncoding()?==?null?||?!req.getCharacterEncoding().equals("UTF-8"))
          {
          req.setCharacterEncoding(
          "UTF-8");
          }

          chain.doFilter(req,?res);
          }


          public?void?destroy()
          {
          this.config?=?null;
          }

          }

          在web.xml文件中配置該過(guò)濾器
          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?web-app?PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"?"http://java.sun.com/dtd/web-app_2_3.dtd">
          <web-app>
          <display-name>javer‘s?project</display-name>
          <filter>
          <filter-name>EncodingFilter</filter-name>
          <display-name>EncodingFilter</display-name>
          <description>對(duì)編碼進(jìn)行轉(zhuǎn)換</description>
          <filter-class>com.javer.test.language.EncodingFilter</filter-class>
          </filter>
          <filter-mapping>
          <filter-name>EncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
          </filter-mapping>
          <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
          </welcome-file-list>
          </web-app>

          4、在JSP 中進(jìn)行聲明
            在JSP頭部聲明<%@ page contentType="text/html;charset= UTF-8" %>
            在Jsp的html代碼中聲明<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            5、數(shù)據(jù)庫(kù)管理
            一般數(shù)據(jù)庫(kù)都可以通過(guò)管理設(shè)置設(shè)定UTF-8
            也可以通過(guò)jdbc鏈接時(shí)指定編碼參數(shù),如:mysql:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
            6、其它
            其他所有和外界交互時(shí)能夠設(shè)定編碼時(shí)就設(shè)定UTF-8,例如讀取文件,操作XML等。總之,記住一個(gè)原則:在所有系統(tǒng)的出入口處都用
          ??????? UTF8編碼進(jìn)行“翻譯”!

          posted on 2007-01-09 21:14 會(huì)飛的魚 閱讀(153) 評(píng)論(0)  編輯  收藏 所屬分類: JSP專欄


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


          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          友情鏈接

          開源鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 大名县| 加查县| 崇义县| 澜沧| 昌宁县| 宜章县| 南开区| 黔南| 霍邱县| 吉首市| 招远市| 梅州市| 金门县| 广饶县| 色达县| 阜新| 阿拉善右旗| 广丰县| 井冈山市| 城口县| 乐至县| 通州市| 章丘市| 屯留县| 台东县| 镇远县| 将乐县| 合阳县| 新野县| 红桥区| 上杭县| 历史| 开封县| 温宿县| 乾安县| 汝南县| 黄陵县| 扶风县| 盐山县| 新巴尔虎左旗| 渝中区|