Posted on 2006-07-24 01:15
大大毛 閱讀(227)
評論(0) 編輯 收藏 所屬分類:
Struts
???跟大家一樣,我在學習Struts的過程中,也不可避免的遇到這個問題,綜合網上說的再加上實踐,暫時有了解決方案(說它暫時是不知道各種情況下都能適用),反正以后遇到例外再改吧.
???解決問題的核心就是要統一使用Unicode編碼(UTF-8)需要從以下幾個方面著手
??????1.JSP頁面編碼
?????????這個較容易搞定,只需要指定頁面的contentType="text/html;charset=UTF-8"即可
??????2.資源文件編碼
?????????這個是針對國際化來講的,如果只有E文的資源,那是不可能出問題的,如果有其它語種的資源文件,需要進行編碼,如果手工做的話需要用到 JDK/lib 目錄下的 native2ascii.exe 工具進行命令行的操作,Eclipse下省心的方法也有,就是去下個插件
JInto
,讓"國際化"的大師們來做這些民工活好了,這個插件還可以對照著多語種進行資源文件的編輯,easy啊.
??????3.頁面輸入編碼
?????????說具體點就是從JSP頁面form提交上去的中文數據,回顯及插入到數據庫中都成了亂碼,這個我在網上查了,有說用Fileter的,不過看著就挺麻煩啊,有個挺簡單的解決方法就是用自己的ActionServlet替換缺省的那個,具體操作是:
?????????(1)定義一個類,讓它extends ActionServlet ,覆蓋process方法
protected
?
void
?process(HttpServletRequest?request,?HttpServletResponse?response)?
throws
?java.io.IOException,?javax.servlet.ServletException?{
???????request.setCharacterEncoding(
"
utf-8
"
);???
???????
super
.process(request,?response);??
????}
?????????(2)修改web.xml文件中的<servlet-class>元素,把這個標簽的內容指向自己的類;
???到此問題解決,不過我在使用中也注意到一個有趣的現象,運行后生成的Web頁面有一個特點,就是從IE的 "查看/編碼方式" 上可以看到IE自動使用的是UTF-8編碼,而你如果換成 "簡體中文GB2312"的話得到的將是一個亂碼頁面