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")这个方法 其他的有没有 谢谢

用的tomcat吗?试试:tomcat目录下conf\server.xml文件中对应位置加上URIEncoding="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跳转,带中文参数乱码问题 高手请进,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

jsp页面显示中文为问号的问题(乱码问题)

一篇文章彻底解决浏览器发送url带中文参数乱码问题

java编程-SSH框架-URL传中文参数部分乱码。。。

url 乱码

为啥jsp使用URL传中文参数会乱码

跳转链接,带中文参数乱码的问题