第三方软件是在服务端更改的吗?字符串本身没更改,对不对,比如传来的是   abcderee,传去的是  %abcderee+

解决方案 »

  1.   

    是从jsp页面向formbean传递时修改的。具体是不是服务端不知道,好像是在客户端传导服务器端过程中改变的。在字符串前面或中间或后面加上特殊字符,比如abjsfj,变成adgggd%sfd,但却变成了null.asd&dla,但却变成了asd。
      

  2.   


    你在哪个地方要用到这个改变的程序,jsp页面上?你期望改成什么样?
    比如abjsfj,变成adgggd%sfd,但却变成了null  那个程序似乎没有完成功能啊
      

  3.   

    在字符串前面加了%或&或+,所以字符串成了乱码,对这些字符 过滤啊
      

  4.   

    因为要做安全性检查,在服务器端加入了检查%^$%&!@@$#这些禁止字符的代码,现在的阶段是用第三方软件修改字符做测试,模拟黑客修改传入值,检查安全性检查代码是否有用。现在的情况是用软件修改了值之后,比如在adsda字符前加个%,因为是java特殊字符,所以没变成期望的%adsda。现在就是想办法使他还原到%adsda,好进行安全性检查。这里的安全性检查的意思就是字符里不能有%^$%&!@@$#等字符。专家能理解我的意思吗?
      

  5.   

    你需要先encode一下再加你的代码上去就行了。
      

  6.   

    第三方软件的字符集应该和你的客户端不同,
    其实把字符集统一就不会有问题了,
    不过不知道可操作性到底有多大。
    如果都不可以动的话,那恐怕就有点困难了。
    因为不是不同种字符集之间都可以转换的。try {
        String str = new String("第三方软件传来的字符串".getBytes("第三方软件字符集"),"客户端字符集");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
      

  7.   

    什么时候encode呢,因为是在客户端传到服务器端时改变的,在客户端没法encode,在服务器端字符已经变乱码了,也没法encode.
      

  8.   

    连 老紫竹 都看不懂了,我没的话说了。。sorry
      

  9.   

    /***
     * 单纯字符的处理,一个字符串进行编码处理
     * @param str
     * @return
     */
    public static String code(String str){
    //  step 1 编码处理
    String strcode="";
    if(null!=str){     
    try {
       strcode=new String(str.getBytes("ISO8859-1"),"gbk");
    } catch (UnsupportedEncodingException e) { 
    e.printStackTrace(); 
    }
    strcode = str;
    }
    //  step 2  返回处理后的字符串
    return strcode;