1.为程序编写一个字符串处理函数,用一个静态文件保存,在需要处理中文字符的JSP页面中包含它,
代码如下:
<%!
publicStringcodeToString(Stringstr)
{
Strings=str;
try
{
bytetemp[]=s.getBytes("ISO-8859-1");
s=newString(temp);
returns;
}
catch(Exceptione)
{
returns;
}
}
%>
要转换时只需:coedeToString(request.getParameter(..));就可以了,很好用的。
2.一种普遍适用的方法,加一个过滤器,之后就可以过上一劳永逸的日子了。
代码如下:
packagefilters;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletRequestWrapper;
publicclassTomcatFormFilterimplementsFilter{
/**
*Request.java
*对HttpServletRequestWrapper进行扩充,不影响原来的功能并能提供所
有的HttpServletRequest
*接口中的功能.它可以统一的对Tomcat默认设置下的中文问题进行解决而只
需要用新的Request对象替换页面中的
*request对象即可.
*/
classRequestextendsHttpServletRequestWrapper
{
publicRequest(HttpServletRequestrequest){
super(request);
}
/**
*转换由表单读取的数据的内码.
*从ISO字符转到GBK.
*/
publicStringtoChi(Stringinput){
try{
byte[]bytes=input.getBytes("ISO8859-1");
returnnewString(bytes,"GBK");
}
catch(Exceptionex){
}
returnnull;
}
/**
*ReturntheHttpServletRequestholdedbythisobject.
*/
privateHttpServletRequestgetHttpServletRequest()
{
return(HttpServletRequest)super.getRequest();
}
/**
*读取参数--修正了中文问题.
*/
publicStringgetParameter(Stringname)
{
return
toChi(getHttpServletRequest().getParameter(name));
}
/**
*读取参数列表-修正了中文问题.
*/
publicString[]getParameterValues(Stringname)
{
Stringvalues[]=
getHttpServletRequest().getParameterValues(name);
if(values!=null){
for(inti=0;i<values.length;i++){
values[i]=toChi(values[i]);
}
}
returnvalues;
}
}
publicvoiddestroy(){
}
publicvoiddoFilter(ServletRequestrequest,ServletResponse
response,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequesthttpreq=(HttpServletRequest)request;
if(httpreq.getMethod().equals("POST")){
request.setCharacterEncoding("GBK");
}else{
request=newRequest(httpreq);
}
chain.doFilter(request,response);
}
publicvoidinit(FilterConfigfilterConfig)throws
ServletException{
}
}
当然要记得改下web.xml
代码如下:
<filter>
<filter-name>TomcatFormFilter</filter-name>
<filter-class>filters.TomcatFormFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>TomcatFormFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
|