java web url编码与解码--中文乱码和特殊字符转义问题

一:前端编码 后端解码 解决中文乱码问题

前端字符串用js的encodeURI()编码 后端使用java.net.URLDecoder.decode(value, "utf-8");//utf-8为具体的字符编码格式可以是:gb2312或者iso-8859等等

二:后端编码 前端解码 解决html转义字符显示问题

        后端使用java.net.URLEncoder.encode(value, "utf-8");//utf-8为具体的字符编码格式

        前端使用js的decodeURIComponent()解码

特别说明:java后端将字符串编码的时候 把空格字符编码成'+'符号 而前端js函数decodeURIComponent()是解码不了的 故可能造成显示错误问题

    而js的encodeURIComponent()函数会把空格编译成%20 所以decodeURIComponent()函数也会把'%20'解码为空格 故后端对'+'号特殊处理。

例如:

    String str = "name = 'hah' and date_end ='9999-12-31 00:00:00.0' and str_dd in('555555','66666','9999','3333')";
            String enStr = URLEncoder.encode(str, "utf-8");
            enStr = enStr.replaceAll("\\+", "%20");
            编码和特殊处理'+'号的编码字符串后结果为:name%20%3D%20%27hah%27%20and%20date_end%20%3D%279999-12-31%2000%3A00%3A00.0%27%20and%20str_dd%20in%28%27555555%27%2C%2766666%27%2C%279999%27%2C%273333%27%29

           前端js解码函数decodeURIComponent()处理后即得原始字符串值 这里解决html显示时对特殊字符的转义 会影响到数据展示问题。

三:若使用编码和解码方式都无法解决特殊字符显示和操作的可以选择对字符的unicode处理 

即所有字符都转换为unicode码 前后端编解码处理 但是unicode码会造成文本串过长过大问题。。。

你可能感兴趣的:(java web url编码与解码--中文乱码和特殊字符转义问题)