我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks

          有人說,亂碼問題一直跟中國的程序員特別有緣,真是再同意不過了,不管是Struts,JSF,JSP,還是MySQL,Tomcat,全都或多或少有亂碼的問題。
          一般的做法有用Filter:

          ?< filter >
          ???? < filter-name > Set Character Encoding </ filter-name >
          ???? < filter-class > org.springframework.web.filter.CharacterEncodingFilter </ filter-class >
          ???? < init-param >
          ?????? < param-name > encoding </ param-name >
          ?????? < param-value > GBK </ param-value >
          ???? </ init-param >
          ???? < init-param >
          ?????? < param-name > ignore </ param-name >
          ?????? < param-value > true </ param-value >
          ???? </ init-param >
          ?? </ filter >
          ?? < filter-mapping >
          ???? < filter-name > Set Character Encoding </ filter-name >
          ???? < url-pattern > *.do </ url-pattern >
          ?? </ filter-mapping >
          ?? < filter-mapping >
          ???? < filter-name > Set Character Encoding </ filter-name >
          ???? < url-pattern > *.jsp </ url-pattern >
          ?? </ filter-mapping >
          ?? < filter-mapping >
          ???? < filter-name > Set Character Encoding </ filter-name >
          ???? < url-pattern > *.html </ url-pattern >
          ?? </ filter-mapping >
          ?? < filter-mapping >
          ???? < filter-name > Set Character Encoding </ filter-name >
          ???? < url-pattern > *.htm </ url-pattern >
          ?? </ filter-mapping >

          的,有用


          ?<% request.setCharacterEncoding( " GBK " ); %>
          的,還有用


          ?<% @ page contentType = " text/html; charset=GBK "? pageEncoding = " GBK " %>

          <meta http-equiv="content-type" content="text/html; charset=GBK">

          的,還可以用


          ?<%? String name? =?? new? String(request.getParameter( " name " ).getBytes( " 8859_1 " ),? " GB2312 " );? %>

          昨天就在做項目的過程中,發現用URL傳request參數的時候,在第二個頁面上得到亂碼的問題。把上面幾種方法都試了一下還是不行。仔細追蹤了一下,發現在頁面的源代碼上中文是正常的,一直到URL還是中文正常,可是在后臺的Action里面log出來就成了亂碼了,于是猜想是在request封裝的過程中把中文變成亂碼了,以致于后臺直接就是取到的亂碼。在后臺Action中Set入中文,頁面上正常顯示,說明Struts的中文已經不存在問題。剩下的,應該就只有doGet和doPost方法的問題了。找了一下tomcat的配置文件,發現只要在server.xml中:


          ????? <!--? Define a non-SSL HTTP/1.1 Connector on port 8080? -->
          ???? < Connector? port ="8080"? maxHttpHeaderSize ="8192"
          ?????????????? maxThreads ="150"? minSpareThreads ="25"? maxSpareThreads ="75"
          ?????????????? enableLookups ="false"? redirectPort ="8443"? acceptCount ="100"
          ?????????????? connectionTimeout ="20000"? disableUploadTimeout ="true" />
          ???? <!--? Note : To disable connection timeouts, set connectionTimeout value
          ???? to 0? -->
          改為


          ????? <!--? Define a non-SSL HTTP/1.1 Connector on port 8080? -->
          ???? < Connector? port ="8080"? maxHttpHeaderSize ="8192"
          ?????????????? maxThreads ="150"? minSpareThreads ="25"? maxSpareThreads ="75"
          ?????????????? enableLookups ="false"? redirectPort ="8443"? acceptCount ="100"
          ?????????????? connectionTimeout ="20000"? disableUploadTimeout ="true"? URIEncoding ="GBK"/>
          ???? <!--? Note : To disable connection timeouts, set connectionTimeout value
          ???? to 0? -->
          就是加上URIEncoding="GBK"就萬事大吉了。

          再加上一條:

          <session-factory>
            <property name="hibernate.connection.url">jdbc:jtds:sqlserver://192.168.0.3:1433;DatabaseName=HomeConsume;charset=GBK</property>
            <property name="hibernate.cglib.use_reflection_optimizer">true</property>
            <property name="hibernate.connection.password">sju</property>
            <property name="hibernate.connection.username">sa</property>
            <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
            <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
            <mapping resource="net/magicyang/homeconsume/pojo/Test.hbm.xml" />
            <mapping resource="net/magicyang/homeconsume/pojo/Consumeinfo.hbm.xml" />
            <mapping resource="net/magicyang/homeconsume/pojo/Consumetype.hbm.xml" />
            </session-factory>
          至此,應該再困難的亂碼問題都解決了吧。就是要在頁面上、數據庫中、request里、doGet、doPost方法里面都是中文!看你還有什么地方躲??



          posted on 2007-01-24 10:00 java_蟈蟈 閱讀(262) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 左贡县| 商南县| 河间市| 阜城县| 佛冈县| 汉源县| 万盛区| 商丘市| 福鼎市| 肥东县| 买车| 汉源县| 嵊泗县| 元氏县| 隆林| 池州市| 民丰县| 乌拉特中旗| 永吉县| 商河县| 于田县| 翁牛特旗| 娄底市| 通海县| 商南县| 马边| 吴忠市| 海城市| 海伦市| 通许县| 新蔡县| 丹棱县| 仲巴县| 通江县| 永德县| 金乡县| 苍南县| 车险| 彭山县| 鹰潭市| 南郑县|