Posted on 2006-07-24 01:15
大大毛 閱讀(231)
評(píng)論(0) 編輯 收藏 所屬分類:
Struts
???跟大家一樣,我在學(xué)習(xí)Struts的過程中,也不可避免的遇到這個(gè)問題,綜合網(wǎng)上說的再加上實(shí)踐,暫時(shí)有了解決方案(說它暫時(shí)是不知道各種情況下都能適用),反正以后遇到例外再改吧.
???解決問題的核心就是要統(tǒng)一使用Unicode編碼(UTF-8)需要從以下幾個(gè)方面著手
??????1.JSP頁面編碼
?????????這個(gè)較容易搞定,只需要指定頁面的contentType="text/html;charset=UTF-8"即可
??????2.資源文件編碼
?????????這個(gè)是針對(duì)國際化來講的,如果只有E文的資源,那是不可能出問題的,如果有其它語種的資源文件,需要進(jìn)行編碼,如果手工做的話需要用到 JDK/lib 目錄下的 native2ascii.exe 工具進(jìn)行命令行的操作,Eclipse下省心的方法也有,就是去下個(gè)插件
JInto
,讓"國際化"的大師們來做這些民工活好了,這個(gè)插件還可以對(duì)照著多語種進(jìn)行資源文件的編輯,easy啊.
??????3.頁面輸入編碼
?????????說具體點(diǎn)就是從JSP頁面form提交上去的中文數(shù)據(jù),回顯及插入到數(shù)據(jù)庫中都成了亂碼,這個(gè)我在網(wǎng)上查了,有說用Fileter的,不過看著就挺麻煩啊,有個(gè)挺簡單的解決方法就是用自己的ActionServlet替換缺省的那個(gè),具體操作是:
?????????(1)定義一個(gè)類,讓它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>元素,把這個(gè)標(biāo)簽的內(nèi)容指向自己的類;
???到此問題解決,不過我在使用中也注意到一個(gè)有趣的現(xiàn)象,運(yùn)行后生成的Web頁面有一個(gè)特點(diǎn),就是從IE的 "查看/編碼方式" 上可以看到IE自動(dòng)使用的是UTF-8編碼,而你如果換成 "簡體中文GB2312"的話得到的將是一個(gè)亂碼頁面