No.1
提交方式为 post的首先要把页面上的PageEncoding="UTF-8";
然后可以在servlet里头先设置request/response.setCharacterEncoding("UTF-8");
最后就是如果重新指定到别外一个页面,那么也要把要指定的那个页面设置PageEncoding="UTF-8"
//解决get提交方式的中文问题(1)//还原->>组装
public String getCharset(String str)
{
String strfirst=null;
byte[] charsetbyte=null;
//还原
try {
charsetbyte=str.getBytes("ISO-8859-1"); //注意:默认进servlet的编码方式就是ISO-8859-1,而不是按照页面的编码格式
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//重新组装
try {
strfirst=new String(charsetbyte,"utf-8"); //这个类型要与请求页面的编码一致
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return strfirst;
}
No.2
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
其中pageEncoding是设置本页的编码方式与其它页面、Servlet无关。
No.3
如果页面要跳转的话;例如:
request.getRequestDispatcher("/Userjsp/UpdatePwd.jsp").forward(request, response);
response.sendRedirect("Userjsp/fail.jsp");
这些跳转的话,提交的方式是post所以可以用过滤器来解决.
if(this.encoding!=null)
{
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
}
chain.doFilter(request, response); //关键代码哇!!
注意web.xml里的配置
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>com.weichen.filter.CharsetFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>