300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > jsp页面间跳转 url传递中文参数乱码 以及后续细节处理

jsp页面间跳转 url传递中文参数乱码 以及后续细节处理

时间:2021-06-22 14:55:44

相关推荐

jsp页面间跳转 url传递中文参数乱码 以及后续细节处理

本博客主要讲的是get方式提交中文乱码情况:

背景: 昨天在页面跳转传递中文参数时,出现乱码的情况,捣鼓了很久,在网上查了一些资料,最后结果是因为不起眼的一些小操作,导致浪费了很多时,特此记录一下这个问题的处理.以及一些细节容易出错的地方.

直接上代码:

//页面间跳转 url 传递的参数(get方式)var params = "marNo=" + marNo + "&marName=" + marName + "&marProv=" + marProv ;params = encodeURI(encodeURI(params)); //两次URI编码MsgBox.open("changeOrg","调整商户所属机构", "1000", "350", "changeMarOrgInfo.jsp?"+ params);

两次URI编码原因: 1.连续两次调用ecodeURI的原因:是因为 Java 中的 request.getParameter(String) 方法会进行一次 URI 的解码过程,调用时内置的解码过程会导致乱码出现。URI编码两次后,request.getParameter(String) 函数得到的是原信息 URI 编码一次的内容。然后再用 下面的3种方式解码,将已经编码的 URI 转换成原文.

下面是中文转码操作 js代码:

方法1:

<%String marName = new String(request.getParameter("marName").getBytes("iso-8859-1"),"UTF-8");String marProv = new String(request.getParameter("marProv").getBytes("iso-8859-1"),"UTF-8");String marCity = new String(request.getParameter("marCity").getBytes("iso-8859-1"),"UTF-8"); %>txt_marName.setValue('<%=marName%>');txt_marProv.setValue('<%=marProv%>');txt_marCity.setValue('<%=marCity%>');

String str= new String(request.getParameter(“paramname”).getBytes(“iso-8859-1”),”UTF-8”);

原理: 将浏览器默认的iso-8859-1 格式 转为 utf-8中文就能正常显示了.

说明:这种转换方式是针对url传参 以及form表单Method=”GET”提交时起作用.

( request.setCharacterEncoding(“UTF-8”); 是针对form表单Method=”POST”提交时起作用)

原因: 对于URL传递以及GET方式提交的数据,在接收页面中通过设置request.setCharacterEncoding(“UTF-8”)来解决乱码问题是不行的,在Tomcat5.0以上版本中,默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编解码.

方法2:

java函数解码:

String str=.URLDecoder.decode(request.getParameter(“paramname”) , “UTF-8”);

<%String marName2 = .URLDecoder.decode(request.getParameter("marName") , "UTF-8");%>txt_marName.setValue('<%=marName%>');

方法3:

JavaScript 全局函数decodeURI解码:

<%String marName2 = request.getParameter("marName");%>txt_marName.setValue(decodeURI('<%=marName%>'));

个人推荐此方法3 : 用get方式提交用(encodeURI/decodeURI)来转码中文字符.

对于第一种方法getBytes(“iso-8859-1”)我之前在本地上能成功转换,但是将项目打包到公司测试环境上后中文又变成了乱码.

细节重点:

虽然上面的格式转化,在大部分博客都能随意搜素到,但是介绍得不是很详细,对于我们不太熟练的童鞋有很多地方不注意容易出现错误.如下:

1.首先我们看看下面的符号:

<%%> 这里面可以添加java代码片段

<%=%> 将变量或表达式值输出到页面

<%! %> 这里添加java方法

<%– –%> jsp注释

2 在使用上面的转码方式时,要在<%%>里面写,不然会报错.因为这是java代码.

在获取值时,‘<%= paramname %>’这样来取, 注意 外面加上引号 ”

由于对jsp中书写java代码不是很熟悉,就导致在转码获取参数时,出了很多奇怪的错误.

在此 记录 一下 .本文并没有详解 中文参数传递的 其他方式方法,着重于记录错误的细节.

有关参数错误乱码的其他解决方式网上其他博客很多,在此不再多说.

个人第一篇博客, 大家一起加油!

参考文章链接:

/miqi770/article/details/1707568

/southcamel/article/details/7703317

/pengyan5945/p/5218368.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。