1. 程式人生 > >weblogic中文亂碼問題總結

weblogic中文亂碼問題總結

由於作業系統、瀏覽器、資料庫、JVM採用的字符集都不一樣,基於Weblogic Server開發的應用經常出現中文顯示亂碼問題,其實在Weblogic Server上執行的WEB應用有很多與字符集有關的設定,下面做一個總結,為了正確處理中文,最好把這些設定都設上。

1. 在JSP檔案頭加入

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

指定該JSP採用的字符集。

2.在Weblogic.xml檔案的< jsp-descriptor >中加入:

< jsp-param >

< param-name >encoding< /param-name >

< param-value >GBK< /param-value >

< /jsp-param >

指定JSP檔案中採用的字符集,在JSP檔案中的< %@ page contentType="text/html; charset=GBK" % >會覆蓋該設定

3.在Weblogic.xml檔案的< jsp-descriptor >中加入

< jsp-param >

< param-name >compilerSupportsEncoding< /param-name >

< param-value >true< /param-value >

< /jsp-param >

如果為TRUE,指定在編譯JSP檔案時,採用在JSP檔案中定義的

< %@ page contentType="text/html; charset=GBK" % >或< jsp-descriptor >中定義的encoding引數中定義的字符集進行編碼,如果為FALSE,則採用JVM中預設指定的字符集進行編碼。

4. Weblogic Server需要把HTTP request(GET 和POST)中的資料從它的原始編碼轉化為Unicode,以便Java servlet API進行處理,為了做這種轉換,Weblogic Server需要知道HPPT request中的資料的編碼方式。這可以通過在Weblogic.xml的< context-param >中設定.

< input-charset >

< resource-path >/< /resource-path >

< java-charset-name >GBK< /java-charset-name >

< /input-charset >

5.從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 = "。。。。。。";

Driver myDriver = (Driver)

Class.forName("。。。。。。").newInstance();

Connection conn =

myDriver.connect(connectUrl, props);

6.伺服器上的NLS_LANG環境變數與資料庫中的字符集的設定一樣。

如:應用伺服器上的NLS_LANG環境變數應設定為:export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"