2004 年終 JSP 中文問題解決方案整理 JSPMySQLHibernateJDBCTomcat
程序员文章站
2022-07-12 16:31:17
...
相信大家在用 JSP 時或多或少都遇到中文的相關問題. 在本論壇用全文檢索可以查到一堆相關資料, 這篇文章算是有點多餘的, 您就當作是篇整理吧.
廢話不多說, 底下寫出目前經過 koji 及 weaker 指導後我所採用的還算不錯的解決方案:
環境:
Tomcat 5.0
MySQL (v3.x or v4.0)
JSP pages 裡面要有底下這些:
<%@ page contentType="text/html;charset=Big5" pageEncoding="Big5" %>
<meta HTTP-EQUIV=Content-Type content="text/html;charset=Big5">
讀取使用者輸入值的時候要先:
request.setCharacterEncoding("Big5");
上面這行建議放在一個 Filter 中.
在作資料庫的連接設定時:
對於 MySQL v3.x and v4.0:
url = "jdbc:mysql://localhost:3306/bbs?useUnicode=true&characterEncoding=big5"
server.xml 的設定檔中可以考慮設:
<Connector ...... URIEncoding="Big5" />
不過好像不設也沒關係的樣子.
註 1: 此方案亦適用於有採用 struts 及 hibernate 的架構.
註 2: 上述的 big5 改成 ms950 (for windows) 或 utf-8 亦可, 不過 utf-8 的 jsp 頁面必須要用 utf-8 編碼儲存會有點麻煩.
註 3: 如果您是自己寫 JDBC 的程式的話, 記得不要用 Statement, 要改用 PreparedStatement. 否則遇到 "許功蓋" 等特例的字時程式執行會爆掉, 而且使用 PreparedStatement 也可減少駭客的 SQL Injection 的攻擊.
廢話不多說, 底下寫出目前經過 koji 及 weaker 指導後我所採用的還算不錯的解決方案:
環境:
Tomcat 5.0
MySQL (v3.x or v4.0)
JSP pages 裡面要有底下這些:
<%@ page contentType="text/html;charset=Big5" pageEncoding="Big5" %>
<meta HTTP-EQUIV=Content-Type content="text/html;charset=Big5">
讀取使用者輸入值的時候要先:
request.setCharacterEncoding("Big5");
上面這行建議放在一個 Filter 中.
在作資料庫的連接設定時:
對於 MySQL v3.x and v4.0:
url = "jdbc:mysql://localhost:3306/bbs?useUnicode=true&characterEncoding=big5"
server.xml 的設定檔中可以考慮設:
<Connector ...... URIEncoding="Big5" />
不過好像不設也沒關係的樣子.
註 1: 此方案亦適用於有採用 struts 及 hibernate 的架構.
註 2: 上述的 big5 改成 ms950 (for windows) 或 utf-8 亦可, 不過 utf-8 的 jsp 頁面必須要用 utf-8 編碼儲存會有點麻煩.
註 3: 如果您是自己寫 JDBC 的程式的話, 記得不要用 Statement, 要改用 PreparedStatement. 否則遇到 "許功蓋" 等特例的字時程式執行會爆掉, 而且使用 PreparedStatement 也可減少駭客的 SQL Injection 的攻擊.