zoukankan      html  css  js  c++  java
  • encodeURIComponent编码后java后台的解码 (AJAX中文解决方案)

    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");//名称检索条件

  • 相关阅读:
    修改msn密碼的地址
    Global.asax.cs中的方法的含义 Application_AcquireRequestState验证Session[轉]
    工作筆記DMIS項目
    给创业者的忠告
    Windows 2008 / Windows 7 x64: The ‘Microsoft.Jet.OLEDB.4.0′ provider is not registered on the local machine.
    Case Study: Nick Leeson and The Barings Debacle
    如何减小MS SQL Server的Log文件尺寸
    如何使windows7的默认共享可以被访问
    Android 开发人员必须掌握的 10 个开发工具
    在Windows Server 2008 R2上设置FTP 服务
  • 原文地址:https://www.cnblogs.com/zouhao/p/3672409.html
Copyright © 2011-2022 走看看