日期:2014-05-17  浏览次数:20828 次

jsp传参乱码
A.jsp(部分代码)
<%@ page import="java.lang.String" language="java" pageEncoding="UTF-8" %>
<%@ include file="/tags/taglibs.jsp"%>  
<!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">
···
</head>
···
<a href="<%=ctx%>B.jsp?Name=${name }&sex=${sex }" 
>click me</a>&nbsp;
---------------------------------------
B.jsp(部分代码)
<%@ page language="java" pageEncoding="UTF-8" isELIgnored="false"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
···
  //显示乱码
  <%=request.getParameter("name")%>
  <%=request.getParameter("sex")%>
···
</body>

其中,在这个页面(A.jsp)接收的参数${ name}、${sex}都显示中文正常,但传到B.jsp页面后显示就出现乱码。



------解决方案--------------------
页面传值,它会根据iso-8859-1转换的。
你最好在接受的时候这样:

new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8");
------解决方案--------------------
<% String name=request.getParameter("name");
String sex=request.getParameter("sex"); 
byte[] n1=new byte(name,"iso-8859-1");
byte[] n2=new byte(sex,"iso-8859-1");
name=new String(n1,"utf-8");
sex=new String(n2,"utf-8"); %>
<%=name>
<%=sex%>
这样你试试吧

------解决方案--------------------
String name= new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8"); 这样就OK了
------解决方案--------------------
楼主 ,解决方案有两种,你用的url请求传参数 除了9楼说的以外,还可以在tomcat中的conf/server.cml配置
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>找到对应的端口配置加上URIEncoding="UTF-8"解决所有get请求乱码
,你用的时tomcat服务器吗?
------解决方案--------------------
a标签提交的方式是get提交。
get提交的时候中文会出现乱码情况:
1:a.jsp 和 b.jsp 页面编码方式看是否相同。
2: 如果用到很多这种跳转,最好用一个过滤器,设置统一的编码方式。
3: 可以直接在b.jsp页面转码.
tring name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");
getBytes()转换为字节码 在java中最后传递的都是字节码。
------解决方案--------------------
在b.jsp中<head>上面加上<%request.setCharacterEncoding("UTF-8") ;%>
或者将request.getParameter("name")改为
tring name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");
------解决方案--------------------
加上一句
<%
request.setCharactorEncoding("gbk");
%>
就OK了
或者重新编码
String name= new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");