SSH环境 jsp url跳转,带中文参数乱码问题 高手请进,谢谢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH环境 jsp url跳转,带中文参数乱码问题 高手请进,谢谢相关的知识,希望对你有一定的参考价值。
<a href="main!home.action?colName=politics&colValue=党员">党员资料</a>
传到action中 colValue就是乱码 我用了spring自带的乱码过滤器 没用
我用的struts2
除了new String (colValue.getBytes("iso-8859-1"),"utf-8")这个方法 其他的有没有 谢谢
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/> 参考技术A <a href="main!home.action?colName=politics&colValue=encodeURI(encodeURI(党员))">党员资料</a>
String s=request.getParameter("colValue");
s = java.net.URLDecoder.decode(s,"GB2312");
解释:url传值需要先编码,也就是encodeURI.并且编码2次.然后用java解码就行.
最好不要用url传中文值,可以用session保存.或者用数字,然后在action判断数字的值,然后取得相应的中文.
如果还不明白,就hi我.呵呵 参考技术B URL中编码格式为ISO-8859-1,处理中文只需将编码格式转换ISO-8859-1
方法一:
http://xxx.do?ptname='我是中国人'
String strPtname = request.getParameter("ptname");
strPtname = new String(strPtname.getBytes("ISO-8859-1"), "UTF-8");
方法二(推荐使用):
<%@ page contentType="text/html;charset=gb2312" %>
<a href="ds.jsp?url=<%=java.net.URLEncoder.encode("编码的是这里","GB2312")%>">点击这里</a>
<%
//request.setCharacterEncoding("GBK");
if(request.getParameter("url")!=null)
str=request.getParameter("url");
str=java.net.URLDecoder.decode(str,"GB2312");
str=new String(str.getBytes("ISO-8859-1"));
out.print(str);
%>
==================================
public String chinatoString(String str)
String s=str;
try
byte tempB[]=s.getBytes("ISO-8859-1");
s=new String(tempB);
return s;
catch(Exception e)
return s;
====================================================
function URLencode(sStr)
return escape(sStr).
replace(/\+/g, '%2B').
replace(/\"/g,'%22').
replace(/\'/g, '%27').
replace(/\//g,'%2F');
方法三:
如果用jstl的话,可以自己写一个el的function,调用URLEncoder.encode来编码。
IE缺省对URL后面的参数是不编码发送的,但是tomat缺省是按ISO8859-1来进行URL解码,因此才会出现上述错误。好的做法是:
1、在URL参数中确保用UTF-8编码之,方法可以用js函数encodeURI(),或调用自定义的el function;
2、设置server.xml中的Connector熟悉URIEncoding="UTF-8",确保解码格式与编码格式统一;
方法四:
<script>
for(var i=0;i<document.links.length;i++)
document.links[i].href=encodeURI(document.links[i].href);
</script>
在action中,String s=request.getParameter("s");
s=new String(s.getBytes("iso-8859-1"),"gbk");
以上方法是收聚了一些网友所讲的解决方法 。本回答被提问者采纳
url传参数出现中文乱码,怎么解决?
一般出现乱码都是在js裏面跳转到哪个类 然後得到这个参数的时候中文乱码,有一个非常实用的办法,在js你可以这样写:
var url=........;
url=encodeURI(url);
url=encodeURI(url); //最重要的部分,两次调用encodeURI ,就是编码两次
然後在跳转到url所在的类, 获取这个参数的方法如下:
String name=request.getParameter("name");
name=URLDecoder.decode(name,"utf8");
这样就能解决乱码问题了,这种方法还没遇到过不能解决的乱码, 参考技术A 一般出现乱码都是在js裏面跳转到哪个类 然後得到这个参数的时候中文乱码,
有一个非常实用的办法,在js你可以这样写:
var url=........;
url=encodeURI(url);
url=encodeURI(url); //最重要的部分,两次调用encodeURI ,就是编码两次
然後在跳转到url所在的类, 获取这个参数的方法如下:
String name=request.getParameter("name");
name=URLDecoder.decode(name,"utf8");
这样就能解决乱码问题了,这种方法还没遇到过不能解决的乱码,
以上是关于SSH环境 jsp url跳转,带中文参数乱码问题 高手请进,谢谢的主要内容,如果未能解决你的问题,请参考以下文章