jsp中,超链接传值(中文)乱码

在jsp页面中通过超链接传值:<a href=select.jsp?namesql=“中文"</a>传值,在用String namesql=(String)request.getParameter("namesql");获取值得时候,出现乱码,怎样解决,急

超链接提交数据,是以get方式提交的

 加入 以下代码是无效的,它是用来解决post方式的乱码问题
  request.setCharacterEncoding("UTF-8");
     response.setCharacterEncoding("UTF-8");

而解决get方式乱码,最方便的方法是在tomcat文件中的server.xml文件进行配置

配置 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="utf-8" />

有两个Connector结点,只能在一个Connector中加,好像是第一个,不行的话再加另外一个,配置时需注意,配置成功过后,需先关闭tomcat,然后重启tomcat

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-14
jsp中传中文一定要经过url编码的,否则就是乱码。
例子如下:
String string = "蔡君如";
String eStr = URLEncoder.encode(string, "utf-8");
System.out.println(eStr);
System.out.println(URLDecoder.decode(eStr, "utf-8"));

输出:
%E8%94%A1%E5%90%9B%E5%A6%82
蔡君如
第2个回答  2021-03-16
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK" %>

<%
String str2 = "张季清";
String str = java.net.URLEncoder.encode(str2, "GBK");
System.out.println(str);
System.out.println(java.net.URLDecoder.decode(str, "GBK"));
%>
<a href = "shiyan.jsp?name=<%=str%>" target=_blank>链接</a>
<%=str%>

以上是第1页面a.jsp 以下是第2页面shiyan.jsp

<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK" %>

<%
String user = request.getParameter("name");
System.out.println(user);
user = java.net.URLDecoder.decode(user, "GBK");
%>

<body>
<%=user%>
</body>
说明: 用java的方式成功了.我也是新手,总结各位前辈的指点,总算弄成功了,希望能帮到新手,也谢谢前辈的指点.试过许多方法都行不通,但也不能说别人的方法不对,或许每个人情况不同.
第3个回答  2013-06-22
编码方式不一致就会出现这种问题,首先看一下你网页得编码方式,然后接取参数的时候用相应的编码。request有一个setParameterEncoding方法吧,先设置在接值。
或者你可以用万能转码,原理很简单把取到的parameter转为数组对象,然后通过String的构造器,重新构造一个字符串。大体就是new String(byte,“iso-8859-1”,“转出的编码比如utf-8”)追问

本页面用了两种传值方式,一种是form,一种是超链接,用form传值的时候,request.getParameter("namesql");获取没问题,但是用超链接传值的时候,就出现乱码,
两种方式都是本页面传到本页面,如果用了setParameterEncoding,form传值会出现乱码

追答

你说的这个我也遇到过,万能转码是没问题的。你应该用了框架吧,据说是框架的问题。

追问

我什么都没用,就在一个jsp页面中完成对数据库表的查询和删除

第4个回答  2013-06-22
在后台取值之前加上
request.setCharacterEncoding(“这里写你jsp里的encoding码");追问

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
加了,没用

相似回答