标签:
Tomcat 默认接收数据的编码是 ISO-8859-1。所以当请求 URL 的参数部分含有中文字符,需要转换字符的编码。
Enumeration<String> paramNames = req.getParameterNames(); while (paramNames.hasMoreElements()) { String paramName = (String) paramNames.nextElement(); String paramValue = req.getParameter(paramName); String paramValueUTF8 = new String(paramValue.getBytes("ISO-8859-1"), "UTF-8"); System.out.println(paramName + ": " + paramValueUTF8); }
上述的方法的一个不足是:需要对所有的参数部分解码。可以直接在 Tomcat 的 server.xml 中将默认的编码设置为 UTF-8。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
当客户端提交的表单内容包含中文字符时,可以在获取表达内容前,调用 request.setCharacterEncoding 方法来设置字符的编码:
req.setCharacterEncoding("UTF-8"); Enumeration<String> paramNames = req.getParameterNames(); while (paramNames.hasMoreElements()) { String paramName = (String) paramNames.nextElement(); System.out.println(paramName + ": " + req.getParameter(paramName)); }
当响应至客户端的内容包含中文字符时,可以在获取输出流之前,调用 response.setContentType 方法来设置响应内容的类型及编码。
resp.setContentType("text/plain;charset=utf-8");
resp.getWriter().println("中文字符");
当 jsp 页面内容包含中文字符时,可以使用 page 指令来指定字符编码。
<%@ page language="java" contentType="text/html; UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>中文标题</title> </head> <body> 中文内容 </body> </html>
JSP 的本质即 Servlet,所以当 JSP 页面中的 Java 代码包含中文字符时,则可以参考 Servlet 中是如何解决中文字符的。
标签:
原文地址:http://www.cnblogs.com/huey/p/5452582.html