• 解决url中特殊字符截断参数的问题


    url转义字符

    1. +  URL 中+号表示空格 %2B 
    2. 空格 URL中的空格可以用+号或者编码 %20 
    3. /  分隔目录和子目录 %2F  
    4. ?  分隔实际的 URL 和参数 %3F  
    5. % 指定特殊字符 %25  
    6. # 表示书签 %23  
    7. & URL 中指定的参数间的分隔符 %26  
    8. = URL 中指定参数的值 %3D

    在js中可用encodeURL(), encodeURIComponent()进行编码

    具体使用:

    如果要将某个文本框中的值进行编码请使用encodeURIComponent(),如果要将整个url编码请使用encodeURL();

    encodeURL()不会对这些字符进行编码:   ! @ # $& * ( ) = : / ; ? + '

    encodeURIComponent()不会对这些字符转码:   ! * ( ) '

    而在文本框中用户有可能输入&号,因此必须对其编码,所以对于url传递的参数的参数值必须使用encodeURIComponent()方式编码。

    如果要对整个url进行编码

    e.g

    url:  http://localhost/user/list.html?name=xxx&age=13

    因为在url中&表示多个参数之间的分隔符,需要保留,且/表示多个目录的分隔符也需要保留因此,对于整个url进行编码就必须使用encodeURL()方式

    Java中:

    由于使用request.getParameter()来获取参数时已经对编码进行了一次解码,因此无需再次使用URLDecoder.decode(“中文”, "UTF-8");来进行解码,如果你一定要在java端进行一次URLDecoder.decode(“中文”, "UTF-8")解码,那么js端必须进行两次编码即:encodeURIComponent(encodeURIComponent("中文"));因为如果不在js端进行两次编码,那么在java端通过URLDecoder.decode(“中文”, "UTF-8")方式解码会产生乱码。

    推荐的做法是:

    在js端:将参数值通过encodeURIComponent()编码,然后将整个url使用encodeURL()方式编码。另外一边进行decodeURIComponent()解码;

    在java端: 直接通过request.getParameter()方式接收参数

  • 相关阅读:
    在 macOS High Sierra 10.13 搭建 PHP 开发环境
    给你的网站免费配置上 HTTPS 证书
    将 MacOS 默认的 PHP 版本升级到 7.*
    System.Data.SqlClient.SqlException: 'Incorrect syntax near 'OFFSET'.
    IIS7/8 HTTP Error 500.19 错误 0x80070021 错误代码:0x8007000d
    http error 502.5
    信用卡逾期了怎么办 ?逾期记录“修复”的两大原则
    APP多开教程
    lua调用不同lua文件中的函数
    Lua 用指定字符或字符串分割输入字符串,返回包含分割结果的数组
  • 原文地址:https://www.cnblogs.com/yangxiong/p/6640282.html
Copyright © 2020-2023  润新知