遇到幾間客 戶使用Big5編碼,開發環境為JSP + Oracle,正常的中文字都可存入顯示,如有遇到中文外字(使用者造字)部分

畫面就顯示 問號,這裡紀錄解決的過程

一、確認 Oracle Server端的編碼

Oracle的 NATIONAL CHARACTER SET設定,可設定tempfile中的NLS_LANG

NLS_LANG=TRADITIONAL_CHINESE.ZHT16BIG5 =>錯誤設定,Oracle的code page在ZHT16BIG5,無外字區定義

請改成

NLS_LANG=TRADITIONAL_CHINESE.ZHT16DBT

並直接用 Oracle AP輸入Big5外字,確認資料庫是可存入取出使用者造字的

 

二、確定 JSP Server的Oracle連線設定

確認 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE中的NLS_LANG的設定,一併更改為

TRADITIONAL_CHINESE.ZHT16DBT

 如果是使用 Tomcat,要檢查c:\web\WEB-INF\web.xml中encoding的設定

 

三、JSP 的寫法注意事項

如果遇到亂碼,或中文外字無法顯示的狀況,可用以下編碼轉換,直接把字串輸出

System.out.println(new String(testString.getBytes("ISO-8859-1","MS950"))); => 這裡不要用BIG5

每頁面中, 都需指定 編碼:

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

//設定request 的編碼為MS950:

request.setCharacterEncoding("MS950");

//設定 response的編碼為MS950:

response.setContentType("text/html; charset=MS950");

以上調整 後,JSP就可正確顯示出中文外字了^^

 

 

創作者介紹

麥克的學習紀錄

miggo 發表在 痞客邦 PIXNET 留言(0) 人氣()