我有個 servlet 處理含有中文的表單 , 用 new String(s.getBytes("ISO8859-1"), "GBK"); 轉碼 , 在 tomcat 5.5 中沒有問題 , 但是移植到 weblogic 8.1" name="description" />
MILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我有個servlet處理含有中文的表單, 用new String(s.getBytes("ISO8859-1"), "GBK");轉碼, 在tomcat5.5中沒有問題,但是移植到weblogic8.1后,轉碼后還是亂碼, 哪位大俠知道怎么解決? --------------------------------------------------------------- 由于操作系統、瀏覽器、數據庫、JVM采用的字符集都不一樣,基于Weblogic Server開發的應用經常出現中文顯示亂碼問題,其實在Weblogic Server上運行的WEB應用有很多與字符集有關的設置. 以下我給出一些方法,樓主試試配置一下吧! 1. 在JSP文件頭加入 <%@ page contentType="text/html; charset=GBK" %> 指定該JSP采用的字符集。 2.在Weblogic.xml文件的 指定JSP文件中采用的字符集,在JSP文件中的<%@ page contentType="text/html; charset=GBK" %>會覆蓋該設置 3.在Weblogic.xml文件的 如果為TRUE,指定在編譯JSP文件時,采用在JSP文件中定義的 <%@ page contentType="text/html; charset=GBK" %>或 4. Weblogic Server需要把HTTP request(GET 和POST)中的數據從它的原始編碼轉化為Unicode,以便Java servlet API進行處理,為了做這種轉換,Weblogic Server需要知道HPPT request中的數據的編碼方式。這可以通過在Weblogic.xml的 --------------------------------------------------------------- 以上是對于一般情況的處理,接著還有2項是比較特殊的方法: 和你實際應用有關: 1.從ORACLE數據庫中檢索出來的中文顯示不正確時,在這種情況下,如果數據庫使用的是中文字符集,并使用的是Type 2 JDBC Driver時,可加入Weblogic.codeset=GBK的屬性來解決這個問題。代碼如下: java.util.Properties props = new java.util.Properties(); props.put("Weblogic.codeset", "GBK"); props.put("user", "scott"); props.put("password", "tiger"); String connectUrl = "jdbc:Weblogic:oracle"; Driver myDriver = (Driver) Class.forName("Weblogic.jdbc.oci.Driver").newInstance(); Connection conn = myDriver.connect(connectUrl, props); 2. 如果是采用WTC調用Tuxedo中的服務,在JSP頁面中無法正確顯示中文,必須使安裝Tuxedo的服務器上的NLS_LANG環境變量與數據庫中的字符集的設置一樣。如后臺Oracle數據庫中的字符集設置為SIMPLIFIED CHINESE_CHINA.ZHS16GBK,那么Tuxedo應用服務器上的NLS_LANG環境變量應設置為:export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
原文轉自:http://www.anti-gravitydesign.com