Posted on 2006-07-24 01:15
大大毛 阅读(220)
评论(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"的话得到的将是一个乱码页面