遇到幾間客 戶使用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就可正確顯示出中文外字了^^
留言列表