佟强 http://blog.csdn.net/microtong
OakCMS内容管理系统 http://www.oakcms.cn http://www.oakcms.net
request对象读取请求参数时默认采用的英文字符集ISO-8859-1。如果请求参数的值含有中文字符,读出的字符串将是乱码。读取含中文字符的参数值需要正确的设置request对象的字符编码。JSP页面需要在调用getParameter()方法之前,调用setCharacterEncoding()方法设置使用什么字符集。常用的表示中文的字符集有:GB2312、GBK、GB18030、BIG5、UTF-8。字符集的设置应该和发送请求的JSP页面的编码一致。
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<html>
<head>
<title>字符编码</title>
</head>
<body>
<form action="character_encoding.jsp" method="post">
<p>姓名:<input type="text" name="name"/></p>
<p><input type="submit" name="submit" value="提交"/></p>
</form>
<%
//设置字符集语句需要放在所有getParameter()方法之前
request.setCharacterEncoding("GB18030");
String name = request.getParameter("name");
if(name!=null) {
out.println("<h2>姓名:" + name+"</h2>");
}
%>
</body>
</html>
正确读取中文字符串的情况:
去掉request.setCharaterEncoding("GB18030")出现乱码的情况:
佟强 http://blog.csdn.net/microtong
OakCMS内容管理系统 http://www.oakcms.cn http://www.oakcms.net