环境tomcat5.5在jsp中有个表单 我采用的提交方式是post
页面编码如下:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
提交后我在servlet端设置请求的编码为request.setCharacterEncoding("UTF-8");
直接按下面的方式取参数
request.getParameter("title")得到的是乱码虽然已经设置了请求编码还是需要通过下面的方式来获取参数
new String(request.getParameter("title").getBytes("ISO-8859-1"),"UTF-8")这种方法虽然能取到正确的中文参数,但是这个我看了一下是tomcat对http服务的解析过程中加进去的ISO-8859-1,所以对其他的网络服务支持应该不好,我怎样根据环境才能正确的取到中文编码的值呢?
页面编码如下:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
提交后我在servlet端设置请求的编码为request.setCharacterEncoding("UTF-8");
直接按下面的方式取参数
request.getParameter("title")得到的是乱码虽然已经设置了请求编码还是需要通过下面的方式来获取参数
new String(request.getParameter("title").getBytes("ISO-8859-1"),"UTF-8")这种方法虽然能取到正确的中文参数,但是这个我看了一下是tomcat对http服务的解析过程中加进去的ISO-8859-1,所以对其他的网络服务支持应该不好,我怎样根据环境才能正确的取到中文编码的值呢?
servlet防止乱码:
1、Tomcat conf下server.xml文件,<Connector>加上URIEncoding="utf-8"
2、页面加上charset=utf-8
3、servlet的doPost方法加上request.setCharacterEncoding("UTF-8")。
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class FilterEncoding implements Filter {
private FilterConfig filterConfig = null; public FilterEncoding() {
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null
|| !(request.getCharacterEncoding().equals("UTF-8"))) {
try {
request.setCharacterEncoding("UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
chain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
} public void destroy() {
} public void init(FilterConfig filterConfig) { this.filterConfig = filterConfig; }
}
web.xml配置
<filter>
<filter-name>filterEncoding</filter-name>
<filter-class>com.filter.FilterEncoding</filter-class>
</filter>
<filter-mapping>
<filter-name>filterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>