获取包含非西欧字符(汉字)的GET请求参数

来源:互联网 发布:可可验证9.5源码 编辑:程序博客网 时间:2024/06/13 13:36

法一:

<%@ page language="java" contentType="text/html; charset=GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>获取包含非西欧字符(汉字)的GET请求参数</title>
</head>
<body>
<%
//获取请求里包含的查询字符串
String rawQueryStr = request.getQueryString();
out.println("原始查询字符串为:" + rawQueryStr + "<hr>");
//使用URLDecoder解码字符串
String queryStr = java.net.URLDecoder.decode(rawQueryStr, "GBK");//这里具体是GBK还是UTF-8与浏览器有关,汉字一般是GBK
out.println("解码后的查询字符串为:" + queryStr + "<hr>");
//以&符号分解查询字符串
String[] paramPairs = queryStr.split("&");
for(String paramPair : paramPairs){
out.println("每个请求参数名、值对为:" + paramPair + "<br/>");
//以=符号分解请求参数名和值
String[] nameValue = paramPair.split("=");
out.println(nameValue[0] + "参数的值是:" + nameValue[1] + "<hr>");
}
%>
</body>
</html>

注:可以自己编写一个表单,用method="GET" action="该jsp页面",来查看效果


法二:

<%@ page language="java" contentType="text/html; charset=GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>获取包含非西欧字符(汉字)的GET请求参数</title>
</head>
<body>
<% 
//1.获取原始的请求参数
String rawname = request.getParameter("name");
String rawgender = request.getParameter("gender");

//2.在获取请求参数值后对参数重新编码(即先将其转换成字节数组,再将字节数组重新解码成字符串)
//2.1将请求参数值使用ISO-8859-1字符串分解成字节数组
byte[] rawnameBytes = rawname.getBytes("ISO-8859-1");
byte[] rawgenderBytes = rawgender.getBytes("ISO-8859-1");
//2.2将字节数组重新解码成字符串
String name = new String(rawnameBytes,"UTF-8");
String gender = new String(rawgenderBytes,"UTF-8");
%>
您的名字:<%=name %><hr>
您的性别:<%=gender %><hr>
</body>
</html>

阅读全文
0 0
原创粉丝点击