javaWeb專案(Spring、Struts2框架)gbk轉gb180整體方案(主要用於解決生僻字)
一、需要需改點:
1:jsp中指定瀏覽器編碼格式,修改後:<%@ page contentType="text/html; charset=GB18030"%>
2:過濾器:
struts.xml 中 i18n編碼格式修改為: gb18030
web.xml 中 spring編碼格式過濾器,編碼格式修改為:gb18030
3:介面響應資料時,如果源java程式碼中是將字串轉為“gbk”資料,現在需要改為gb18030。 例如:byte[] byteMessages = responseMessage.getBytes("GBK");
4:介面響應資料時,如果源java程式碼中是將響應編碼型別設定為“gbk”,現需要改為gb18030。 例如:response.setContentType("text/html;charset=GBK");
5:informix 資料來源 連線url中要有 gb18030。如:jdbc.url=*******NEWCODESET=gb18030,8859-1,819,Big5;IFX_USE_STRENC=true
Oracle 資料庫需要用 指令碼 修改該庫的編碼格式,(可能還需要修改客戶端編碼格式)
6、IE在向服務端傳送請求時,如果採用在url中拼接引數,無論get請求還是post請求及Ajax的get請求或post請求 都不能攜帶生僻字, 因為IE會自動把 URL中的引數預設轉為 gbk 格式,生僻字在這個時候會變為 ? 號。 (使用谷歌瀏覽器可以解決問題, 谷歌瀏覽器會把 url引數轉為gb18030 有可能是當前頁面是gb18030。
8、 Ajax的post請求,會把post中的資料中轉為 utf-8 再發送給伺服器, struts2 框架預設以 urf-8 接收該資料, 但是 struts2 預設攔截器,都以 gb18030 格式 接收資料,需要重新Struts2編碼過濾器,通過程式碼判斷Ajax請求,再將utf-8資料轉為gb18030.
9、 使用Weblogic服務, domain中的《setDomainEnv.sh》檔案將該domian編碼格式修改為:
LC_ALL="zh_CN.gb18030"
export LC_ALL