JSP中乱码问题

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

JSP中传参中文乱码

参照本人的文章:点击打开链接

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

前因:

bug~


系统中当第一次进行"选择按钮"回设操作中不会出现乱码。

当原先有值,再进行选择回设(且点击下页操作,再新选一个值,不选值也会出现乱码,即执行下页操作转码时有问题)操作时原先的值出现乱码,而新选的值正常。(说的比较拗口)。

分析:(假设:回设的变量为returnName)

第一次点”选择“操作时弹出一个新的画面,此时会调用Action,returnName为空(初始值)。

选择”王二“,”李四“,回设关闭页面后,此时父页面上显示的值是”王二“,”李四“。-------------------显示OK,不会乱码。


第二次再点击”选择“操作时,此时会将父页面上的”王二“,”李四“两个值作为参数传进去。(此时属于JSP中传参中文乱码点击打开链接

在弹出的页面中点击下一页操作时,也会调用Action(点”选择“操作时调用的是同一个Action),此时在Action中取得的returnName已经是乱码了。实际并不是这样的(??乱码???),此处只是为了说明而已。



当参数是以url形式传过来时,用”JSP中传参中文乱码“文章中的解决方法可以解决。在JSP中对要传的中中文参数进行两次编码(encodeURI(encodeURI(returnName)))。

解决:

方法1:

在后台Action中改:进行判断,如果是点“选择按钮”时,对传来的retrunName进行url转码:URLDecoder.decode(request.getParameter("returnName"), "UTF-8")。而进行换页操作时对传过来的returnName进行String解码:new String(request.getParameter("returnName").getBytes(), "UTF-8")。

  

方法2:

在JSP中进行修改,在进行换页操作时,对要传到后台的参数returnName,进行一次编码(前面打开一个新页面,所以要进行两次编码,据说因为是浏览器会默认对其进行一次解码)encodeURI(returName)。在后台取的时候统一用URL转码:URLDecoder.decode(request.getParameter("returnName"), "UTF-8")。


总结:(个人理解)

其实不管是是第一种“选择按钮”还是第二种进行换页操作时,它跳到后台时,都是JSP中中文传输的问题,都要进行编码处理,只不过第一种因为是新开一个页面,所以要两次编码,而第二种没有新开一个页面,所以只需一次编码。

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

写着写着,感觉都有点晕了。自己都搞混了,虽然问题解决了,但本质原因自己还是不太懂。

希望大家能指正下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值