使用UTF-8其實對於JSP來說
對於在網頁常常會需要輸入或輸出多國語文上
算是一個比較方便的編碼
JSP的轉碼設定其實也不難..只要記得加上去即可
不然JSP內定的編碼可不是UTF-8喔
不過可惜的是MySQL至今尚沒有完整支援UTF-8
但是可別這樣就灰心囉
因為我門可以透過MySQL提供的Connection/J的JDBC介面來存取UTF-8編碼的資料
利用JDBC自動轉碼對我們撰寫網頁的人是很方便的
好拉!!不多說..馬上進入主題
我以下分幾個步驟來說明.很少.但都是需要設定的地方而已
只是提出來給大家注意
1.透過JDBC連接MySQL
12
Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection conn = DriverManager.getConnection("jdbc:mysql://[hostname]/[database]?user=&password=&useUnicode=true&characterEncoding=utf-8");
紅字的地方一定要加入
因為那是呼叫(說呼叫應該可以吧)JDBC利用UTF-8的編碼來存取資料
簡單的說
就是JSP跟JDBC說....我只要UTF-8.其他免談....
這樣說了解吧^^"
PS:
其實這部分我是建議最少用JSP include的方式來作.比較不會出錯
只要需要的時候include近來即可..有問題只要找尋一個檔案
不要像我每一個都得去檢查有沒有錯誤...
之前的問題就是有一個檔案的JDBC編碼設定為Big5
害我弄了好多天才找到.....
更進階的朋友可是試著用JavaBean來控制應該會更簡單
2.
網頁的部分一定要設定為如下的程式碼
1
<%@ page contentType="text/html;charset=utf-8" %>
是跟JSP跟瀏覽器(如IE)說我的編碼要用UTF-8來顯示
而下面這個pageEncoding可加可不加..我是習慣都加啦
不知道會不會有問題
請參考javamon65大大的精闢文章會更了解http://www.javaworld.com.tw/jute/post/view?bid=6&id=27113&sty=2
1
<%@ page pageEncoding="utf-8" %>
3.
當你用Form傳遞資料到另一個網頁後
那接收資料的編碼模式也得設定
不然所接收資料的編碼可是使用JSP內定的編碼
你看到的都是亂碼了
1
<% request.setCharacterEncoding("utf-8"); %>
4.
相反的.如果你傳遞資料出去(表單似乎也包含在內.這我不太清楚得請教各位大大)
就必須設定下面的程式碼
1
<% response.setContentType("text/html;charset=utf-8"); %>
告訴Tomcat需要使用UTF-8來處理資料的傳遞
5.
這也是很重要的一點喔
記得在編輯你的JSP檔案後
在儲存的時候記得儲存成為UTF-8的格式
因為我適用Dreamweaver MX
MX會自動依據ContentType來幫你儲存檔案所以不用擔心
但是你若是用NotePad(記事本)寫JSP的話
那就要在檔案格式那邊選UTF-8的格式來儲存囉
否則網頁顯示出來的一樣是亂碼
ex:你存成Big5格式來存檔.但是網頁編碼是設定為UTF-8
那JSP跟瀏覽器連絡的時候自然是以UTF-8來處理
所以Big5的格式會變轉成UTF-8...當然是亂碼囉
所以記得這件很重要的事情