Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 19237|回复: 0

encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-11 09:23:30 | 显示全部楼层 |阅读模式

    encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)

    同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题。

    原来他是这样写的:

    window.self.location="searchbytext.action?searchtext="+encodeURIComponent(seartext);

    java处理的代码为:

    searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/

    咋一看觉的没问题啊,一编一解的,应该可以了。但还是出现了乱码。

    后来网搜资料,发现原来在对后台java程序里的searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/进行一次解码就好了。

    正确的代码:

    JavaScript:

    window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

    java:

    searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/

    另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:

    java代码:

    String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");

     

     

    //--------------------------------我使用的方法--------------------------------

    JS编码:

    var trmpStr = url+"?com=exportData"
    + "&dataAlias="+dataAlias
    + "&orgDm="+cboZz.getCode()
    + "&ksrq="+obj.ksrq
    + "&jzrq="+obj.jzrq
    + "&name="+encodeURIComponent(encodeURIComponent(txtMcInfo))
    + "&personCode="+personCode
    + "&queryStr="+encodeURIComponent(encodeURIComponent(queryStr));

     

    JAVA解码:

    String dataAlias = request.getParameter("dataAlias");//数据来源别名
    String orgDm = request.getParameter("orgDm");//机构代码
    String ksrq = request.getParameter("ksrq");//开始日期
    String jzrq = request.getParameter("jzrq");//截止日期
    String name = java.net.URLDecoder.decode(request.getParameter("name"),"UTF-8");//名称检索条件
    Long personCode = null;//组员id
    try{ personCode = Long.parseLong(request.getParameter("personCode"));}catch(Exception e){}
    String queryStr = java.net.URLDecoder.decode(request.getParameter("queryStr"),"UTF-8");//名称检索条件

     

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 01:56 , Processed in 0.059831 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表