1、 对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以。
2、 正确设置JSP的pageEncoding参数
3、 在所有的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8"),从而间接实现对浏览器编码的设置。
4、 对于请求,可以使用过滤器或者在每个JSP/Servlet中设置request.setCharacterEncoding("UTF-8")。同
时,要修改Tomcat的默认配置,推荐将useBodyEncodingForURI参数设置为true,也可以将URIEncoding参数设置为
UTF-8(有可能影响其他应用,所以不推荐)。
总结:
1、做一个编码过滤器,类似于:Java代码
- publicvoiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throwsIOException,ServletException {
- String strRequestURI = ((HttpServletRequest) request).getRequestURI();
- String encoding = selectEncoding(request);
- request.setCharacterEncoding(“UTF- 8”);
- chain.doFilter(request, response);
- } Java代码
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException,ServletException {
- String strRequestURI = ((HttpServletRequest) request).getRequestURI();
- String encoding = selectEncoding(request);
- request.setCharacterEncoding(“UTF-8”);
- chain.doFilter(request, response);
- } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException { String strRequestURI = ((HttpServletRequest) request).getRequestURI(); String encoding = selectEncoding(request); request.setCharacterEncoding(“UTF-8”); chain.doFilter(request, response); }
2、在JSP页面中加上:
<%@ page contentType="text/html;charset=UTF-8" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
3、修改Tomcat5.0的D:/jakarta-tomcat-5.0.30/conf/server.xml
找到connector部分
加上useBodyEncodingForURI="true" URIEncoding="UTF-8"
比如:
Xml代码 - < Connector
- port = "8080"
- maxThreads = "150" minSpareThreads = "25" maxSpareThreads = "75"
- enableLookups = "false" redirectPort = "8443" acceptCount = "100"
- debug = "0" connectionTimeout = "20000"
- disableUploadTimeout = "true" useBodyEncodingForURI = "true" URIEncoding = "UTF-8" />