jsp使用URL编码传递中文参数问题
Jsp页面使用URL编码传递中文参数的情况下,在参数的解析过程中会出现乱码。由于java在设计的时候考虑到了国际化的问题,在java源程序编译成字节码的时候默认使用的是UTF-8编码。而在web运用上,由于不同的浏览器向服务器发送的信息采用的编码方式不同,在由像tomcat之类的服务器解码的时候会由于编码方式的不同而产生乱码,这是一个会困扰jsp初学者很久的问题。以前在使用struts的时候不需要处理这些问题,前些天在做一个简单的jsp页面的时候碰到这个问题。经过半天的摸索,基本解决了该问题。
例子中a.jsp页面通过URL编码的方式传递中文参数,在b.jsp中对该参数进行解析。
a.jsp源代码
<%@ page contentType="text/html;
charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312" />
content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<%
String str_test = "华工";
%>
<form method=post
action="b.jsp?test=<%=java.net.URLEncoder.encode(str_test) %>">
action="b.jsp?test=<%=java.net.URLEncoder.encode(str_test) %>">
<input type="submit"
value="Submit" name="提交">
value="Submit" name="提交">
</form>
</body>
</html>
b.jsp源代码
<%@ page contentType="text/html;
charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312" />
content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<%
String str = new
String(request.getParameter("test").getBytes("ISO8859_1"));
String(request.getParameter("test").getBytes("ISO8859_1"));
%>
<BR>
<%=str %>
</body>
</html>
说明:在使用了java.net.URLEncoder.encode
编码后,页面获取参数request.getParameter后需要使用ISO8859_1编码转换。此外,在jsp的字符集声明中把charset=UTF-8也没
编码后,页面获取参数request.getParameter后需要使用ISO8859_1编码转换。此外,在jsp的字符集声明中把charset=UTF-8也没
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!