- 论坛徽章:
- 0
|
Struts 1.3中文问题处理
在Struts 中有可能出现中文问题的情况共有3处:
1. 在JSP页面中的文字出现乱码;
2. 在Servlet,JSP传递中文参数,导致乱码出现;
3. 在Struts国际化过程中,中文资源文件出现乱码问题;
无论是上述的何种情形,解决问题的基本思路都是一致的,就是想方设法将编码方式都统一为UTF-8。
针对第1种情况,解决方法相当简易, 就是将对应JSP页面的编码方式由默认的ISO-8859-1改成UTF-8即可.
而第二种情况,我们可以利用过滤器进行解决,具体作法如下:
2.1 修改Tomcat conf/目录下的server.xml文件
为了确保Tomcat中的运作使用的也是UTF-8编码方式,需要修改Tomcat conf/目录下的server.xml文件。在大约50行处找到
在其后添加:URIEncoding="UTF-8",使得Tomcat在URI的编码方式确定为UTF-8
2.2 编写过滤器,示例代码如下:
package net.ansonzeng.webexample;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharacterEncodingFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
//把request对象的编码方式变为UTF-8
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
2.3 在project 的web.xml中添加filter的声明,示例代码如下:
characterEncoding
net.ansonzeng.webexample.CharacterEncodingFilter
characterEncoding
/*
上述过滤器是对所有的操作都进行UTF-8的编码统一,在实际开发中可以根据实际需要,进行选择性过滤。
至于第三种情况,可以使用JDK自带的小工具native2ascii,将中文的国际化文件进行UTF-8的编码。但更推荐使用eclipse 的插件resource bundle editor来进行struts国际化的处理。Resource bundle editor的下载地址如下:
http://sourceforge.net/projects/eclipse-rbe/
相关的使用教程可在google上轻易查到,本文在此略过。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/53763/showart_450850.html |
|