url中用 like %林% 做为参数。出现了乱码问题。

Sam_Deep_Thinking
Java领域新星创作者
博客专家认证
2009-12-10 07:34:02
是这样的。请先看下面的代码:

<script>

var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&where='+where;

openwin(URL,'400','830');
</script>

where的值是带有like和百分号的。例如:
where = "name like %林%"


参数传到openSelectField.jsp后。我使用下面的代码去拿到参数的值,如下:

String where = (String)request.getParameter("where");

但是却发现where = null。

碰到这个问题后,我就先用不带%的参数值。例如 whereExcel=" name = 林彬"
试一下openSelectField.jsp中是否可以拿到值。

结果是可以拿到的。


所以我就用了java中的URLEncoder来处理。

URLEncoder.encode(where,"UTF-8")

处理完后,再次调用如下代码:

var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&where='+where;

openwin(URL,'400','830');

则openSelectField.jsp上是可以拿到值的。
但是此时我在openSelectField.jsp上有一个按钮。点击完后,想把这个where传到action上去。

这个时候,无论我在action中如何处理,都是乱码。这样导致我无法访问数据库了。

在action中我是用RLDecoder.decode(where,"UTF-8");
来做的。
还试验了。 where = new String(where.getBytes("ISO8859_1"),"UTF-8");

以及request.setCharacterEncoding(arg0)
等方式。就是不行。

请问我该如何解决这个问题。

像javascipt中,还有encodeURI() 和encodeURIComponent等。目前还没有试过。

我觉得最主要是不是%百分号的问题。

...全文
254 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sam_Deep_Thinking 2009-12-10
  • 打赏
  • 举报
回复
散分了。谢谢大家。o(∩_∩)o...
Sam_Deep_Thinking 2009-12-10
  • 打赏
  • 举报
回复
1、因为是修改旧的系统,所以直接修改tomcat的配置的话,是会影响到其他的代码的。

2、在url中因为有了百分号%%所以,必须使用JavaScript 中的encodeURI 方法,或者Java 中的URLEncoder.encode 方法,进行编码。这样的话。tomcat才不会赋予null值(我用的是tomat5.0.27)

3、我传递%%传了几个页面。所以还得处理一下的。如下:

=============================================================

请看下面的代码:
var formobj = obj.form;
var whereExcel = "<%=whereExcel%>";
if(whereExcel.indexOf('like') >= 0)
{
whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';

}
//alert(whereExcel);
var sumCount = "<%=sumNote%>";
//alert(whereExcel);
//retrun;
var URL = '/zmt/tiles/ry/openSelectField.jsp?

excel=excel&sumCount='+sumCount+'&whereExcel='+whereExcel;

openwin(URL,'400','830');


此时是传递到openSelectField.jsp页面上的。
所以openSelectField.jsp首先得这样处理的:

whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';


接下来又是使用下面的代码调用action的话,则 如下:


var formObj = obj.form;
var whereExcel = "<%=whereExcel%>";
alert(whereExcel);
var sumCount = "<%=sumCount%>";
if(whereExcel.indexOf('like') >= 0)
{
whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
formObj.action='/zmt/ry/search.do?

excel=excel&sumCount='+sumCount+'&hasLike=like&whereExcel='+whereExcel;
}else
{
formObj.action='/zmt/ry/search.do?

excel=excel&sumCount='+sumCount+'&whereExcel='+whereExcel;
}

formObj.submit.click();


最后在action中还得这样处理whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
就可以了。

==================================================================


这样的话,最终传到action后,才可以拿到%林%这样的值的
  • 打赏
  • 举报
回复
tomcat/get 方式乱码问题,在 CSDN 已经被问烂了!

1,修改 tomcat 的 server.xml 的 Connector,加上 URIEncoding="utf-8"
2,地址栏中的参数使用 URL 编码。JavaScript 使用 encodeURI 方法,Java 使用 URLEncoder.encode 方法,JSTL 中可以直接使用 <c:url> 和 <c:param>
liujiesmart 2009-12-10
  • 打赏
  • 举报
回复
一般get方式传递中文容易出现乱码
我用get方式传递到action 出现乱码,一直到现在都没解决,试了各种办法
zl3450341 2009-12-10
  • 打赏
  • 举报
回复
where = new String(where.getBytes("ISO-8859-1"),"UTF-8"); 
倾听-csdn 2009-12-10
  • 打赏
  • 举报
回复
呵呵,这个需要修改tomcat的编码方式为UTF-8就可以了
twinsshehp 2009-12-10
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧