步骤一:编辑Tomcat的配置文件conf/server.xml在用于接受客户端语法的Connector<connector></connector>标签中添加URIEncoding="UTF-8"属性,该属性用来解决GET中的编码问题。
xml 代码
- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
步骤二:在每个需要提交表单参数的JSP/Servlet之前加入下列代码来设置字符集,用于搞定POST请求:
java 代码
- request.setCharacterEncoding("UTF-8");
这样基本就搞定了字符乱码问题了,实现上述问题的要求是所有的网页编码必须是UTF-8编码既。
在JSP中:
jsp 代码
- <%@page contentType="text/html" pageEncoding="UTF-8"%>
在Servlet中:
java 代码
- response.setContentType("text/html;charset=UTF-8");
在所有的网页中:
html代码
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
以上测试在Tomcat 6.0.14、IE6.0、FireFox2.0.13及Opera9.25中测试通过,开发环境使用netBeans 6.0
附测试代码:
html代码
- Document : zc
- Created on : 2007-12-22, 17:20:24
- Author : 啊春
- -->
- >
- <html>
- <head>
- <title> title>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- head>
- <body>
- <form action="/wat1/t1" method="GET">
- 姓名:<input type="text" name="name" value="" size="20" />
- 密码:<input type="password" name="passwd" value="" size="20" />
- <input type="submit" value="注册" />
- form>
- <br />
- <form action="/wat1/t1" method="POST">
- 姓名:<input type="text" name="name" value="" size="20" />
- 密码:<input type="password" name="passwd" value="" size="20" />
- <input type="submit" value="注册" />
- form>
- body>
- html>
java 代码
- protected void processRequest(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType("text/html;charset=UTF-8");
- PrintWriter out = response.getWriter();
- try {
- /* TODO output your page here
- out.println("");
- out.println("");
- out.println("");
- out.println("");
- out.println("");
- out.println("
Servlet t1 at " + request.getContextPath () + "
"); - out.println("");
- out.println("");
- */
- out.println("Hello 欢迎你的注册");
- request.setCharacterEncoding("UTF-8");
- String str = request.getParameter("name");
- out.println(str);
- out.println(request.getParameter("passwd"));
- } finally {
- out.close();
- }
- }