The parameter data of the get method contains parentheses

In general, when the get method contains special symbols, encodeURI() cannot be encoded.

encodeURI(), encodeURIComponent()  does not encode ASCII letters and numbers, nor does it encode these ASCII punctuation marks: - _ . ! ~ * ' ( ) .

The purpose of encodeURI() is to completely encode the URI, so the following ASCII punctuation marks that have special meanings in the URI will not be escaped by the encodeURI() function: ;/?:@&=+$,# But encodeURIComponent() can.


Because my special symbols for parameter transfer are parentheses, I use escape() here to encode

This method does not encode ASCII letters and numbers, nor does it encode the following ASCII punctuation marks: * @ - _ + . / .

All other characters are replaced by escape sequences.


But when I only use escape() once for encoding in jsp, the field returned in the background is null

When I re-encode the input parameters escape(escape(xxx)), the corresponding data can be obtained in the background (the specific reason is unclear)

And there is no corresponding tool class decoding in the background, when a tool class is found on the Internet


public class EscapeUtil {
private final static String[] hex = { "00", "01", "02", "03", "04", "05",    
    "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10",    
    "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B",    
    "1C", "1D", "1E", "1F", "20", "21", "22", "23", "24", "25", "26",    
    "27", "28", "29", "2A", "2B","2C", "2D", "2E", "2F", "30", "31",    
    "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C",    
    "3D", "3E", "3F", "40", "41", "42", "43", "44", "45", "46", "47",    
    "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "50", "51", "52",    
    "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C","5D",    
    "5E", "5F", "60", "61", "62", "63", "64", "65", "66", "67", "68",    
    "69", "6A", "6B", "6C", "6D", "6E", "6F", "70", "71", "72", "73",    
    "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E",    
    "7F", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",    
    "8A", "8B", "8C", "8D", "8E", "8F", "90", "91", "92", "93", "94",    
    "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F",    
    "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA",    
    "AB", "AC", "AD", "AE", "AF", "B0", "B1", "B2", "B3", "B4", "B5",    
    "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "C0",    
    "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB",    
    "CC", "CD", "CE", "CF", "D0", "D1", "D2", "D3", "D4", "D5", "D6",    
    "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "E0", "E1",    
    "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC",    
    "ED", "EE", "EF", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7",    
    "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF" };    private final static byte[] val = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01,    0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01,    0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01,    
   





    0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x3F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,    
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,    
    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,    
    0x3f, 0x3f, 0x3f, 0x3f, 0x3f,    
    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,    
    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,    
    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,    
    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,    
    0x3f, 0x3f, 0x3f, 0x3f, 0x3f,     / **         /    
    }     *         * Encoding       *    

   



     * @param s   
     * @return   
     */   
    public static String escape(String s){    
StringBuffer sbuf = new StringBuffer();    
    int len = s.length();    
    for (int i = 0; i < len; i++)
    {    
    int ch = s.charAt(i);    
    if ('A' <= ch && ch <= 'Z'){    sbuf.append((char) ch);        } else if ('a' <= ch && ch <= 'z'){    sbuf.append((char) ch);        } else if ('0' <= ch && ch <= '9'){           sbuf.append((char) ch);        } else if (ch == '-' || ch == '_' || ch == '.' || ch == '!' || ch == '~' || ch == '*'|| ch == '\'' || ch == '(' || ch == ')'){    sbuf.append((char) ch);    
   

   

   

   
    } else if (ch <= 0x007F){    
    sbuf.append('%');    
    sbuf.append(hex[ch]);    
    } else{    
    sbuf.append('%');    
    sbuf.append('u');    
    sbuf.append(hex[(ch >>> 8)]);    
    sbuf.append(hex[(0x00FF & ch)]);    
    }    
}    
return sbuf.toString();    
}         /** *//**         * decode Description: This method ensures that the correct "decoding" result can be obtained regardless of whether the parameter s is encoded by escape() or not.       *          * @param s         * @return         */        public static String unescape(String s){         StringBuffer sbuf = new StringBuffer() ;         int i = 0;         int len ​​= s.length();    
   










    while (i < len){    
    int ch = s.charAt(i);    
if ('A' <= ch && ch <= 'Z'){    
sbuf.append((char) ch);    
    } else if ('a' <= ch && ch <= 'z'){     sbuf.append((char) ch);        } else if ('0' <= ch && ch <= '9'){ sbuf.append((char) ch);        } else if (ch == '-' || ch == '_'|| ch == '.' || ch == '!' || ch == '~' || ch == '*'|| ch == '\'' || ch == '(' || ch == ')'){    sbuf.append((char) ch);        } else if (ch == '%'){        int cint = 0;        if ('u' != s.charAt(i + 1)){        cint = (cint << 4) | val[s.charAt(i + 1)];        cint = (cint << 4) | val[s.charAt(i + 2)];        i += 2;        } else{    
   

   

   







    cint = (cint << 4) | val[s.charAt(i + 2)];    
    cint = (cint << 4) | val[s.charAt(i + 3)];    
    cint = (cint << 4) | val[s.charAt(i + 4)];    
    cint = (cint << 4) | val[s.charAt(i + 5)];    
    i += 5;    
    }    
    sbuf.append((char) cint);    
    } else{    sbuf.append((char) ch);        }        i++;       }        return sbuf.toString();    }}
   




    

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326661836&siteId=291194637