Java web jsp中关于request , get / post 中文字符 乱码的问题解决方式

首先,我们新建一个项目。然后在WebContent中新建jsp文件命名为regist.jsp 这个界面为用户提供输入信息的功能,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 注册界面 -->
	<h1>注册新用户</h1>
	<!-- action 提交请求的地址 method 处理请求的方式 -->
	<form action="userService.jsp"method="get">
		
		<table>
			<tr>
				<td>用户名</td>
				<td>
				<input type="text"name="userName"/>
				</td>
			</tr>
			<tr>
				<td>密码</td>
				<td>
				<input type="password"name="userPwd"/>
				</td>
			</tr>
			<tr>
				<td>爱好</td>
				<td>
				<input type="checkbox"name="hobby"value="1"/>看书
				<input type="checkbox"name="hobby"value="2"/>打球
				<input type="checkbox"name="hobby"value="3"/>健身
				</td>
			</tr>
			<tr>
				<td>
				<input type="submit"/>
				</td>
			</tr>
		</table>
	
	</form>
</body>
</html>

效果如下图:
在这里插入图片描述
在上面的代码中,我们看到我们将数据提交到了userService.jsp
处理请求的方式被设定为get

	<form action="userService.jsp"method="get">

我们同路径新建jsp文件,名字叫userService.jsp 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 处理注册的jsp文件 -->
<%
	String userName = request.getParameter("userName");
	String userPwd = request.getParameter("userPwd");
	
	out.print("用户名:" + userName);
	out.print("密码:" + userPwd);
%>
</body>
</html>

我们用userName接收了用户提交的用户名,userPwd接受用户提交的密码,然后就是简单的打印出来,第一次输入用户名我们用英文来测试:

密码为
运行结果如图:
在这里插入图片描述
没有任何问题,第二次我们用中文用户名测试:
在这里插入图片描述
点击提交:
在这里插入图片描述
发现用户名乱码,接下来是解决方案:

方案一(手动解决):
userName = new String(userName.getBytes("ISO-8859-1") , "UTF-8");

将userService.jsp中的userName进行处理用getBytes方法括号里面为原来的编码类型 , 后面为目标编码类型 ,修改后代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 处理注册的jsp文件 -->
<%
	String userName = request.getParameter("userName");
	//手动处理中文字符的问题
	userName = new String(userName.getBytes("ISO-8859-1") , "UTF-8");
	String userPwd = request.getParameter("userPwd");
	
	out.print("用户名:" + userName);
	out.print("密码:" + userPwd);
%>
</body>
</html>

运行结果:
在这里插入图片描述
成功解决!但是这种方法一次只能处理一条数据,要想让他每次都自动处理要怎么做呢?请看方案二:

方案二(配置tomcat文件):
	找到tomcat安装路径,打开其中的 conf 文件夹,编辑其中的名字叫做 server.xml 的文件找到第70行左右的叫做Connector的内容进行修改:

在这里插入图片描述

配置请求的字符集,加入此句话:
URIEncoding="UTF-8"

在这里插入图片描述
保存,重新部署服务器,启动项目,提交后即可解决。

若用post方式,则应该设置请求字符集:
request.setCharacterEncoding("UTF-8");

如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 处理注册的jsp文件 -->
<%
	//设置请求的字符集
	request.setCharacterEncoding("UTF-8");
	String userName = request.getParameter("userName");

	String userPwd = request.getParameter("userPwd");
	
	out.print("用户名:" + userName);
	out.print("密码:" + userPwd);
%>
</body>
</html>

以上便是解决方法。如有错误,欢迎指出,感谢阅读!

发布了6 篇原创文章 · 获赞 10 · 访问量 3259

猜你喜欢

转载自blog.csdn.net/qq_31747473/article/details/104390329