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码会造成文本串过长过大问题。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值