url中的转义字符“+”和空格

问题:今天测试跑来找我说,h5分享页面打开没数据,我打开自己的小米手机看了看是好的,然后他拿的iphone测试机打开就是没数据

为了一探究竟,我在页面上加上了移动端调试vConsole(没用过的可以看我前面的文章),发现在ipnone请求报了500错误。我马上想到参数的问题,对比了一下参数:

                安卓浏览器地址栏url:域名?sharePage=a+b,

                safari中浏览器地址栏url:域名?sharePage=a%20b。

                打印安卓浏览器url:域名?sharePage=a+b

                打印safari浏览器url:域名?sharePage=a b(中间直接是空格)

                打印安卓浏览器请求接口参数:a%2Bb

                打印safari浏览器请求接口参数:a%2520b

在安卓浏览器中服务器正常解析的。但是safari中是%2520,这我们这边服务器就没解析出来,这我就想到让两种保持一致应该可以,于是就有了下面解决方案。

解决方法:url=url.replace(/[\s]g/,'+')

总结:

扩展:给大家一些url上的转义字符的参考:

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

    =    URL 中指定参数的值                           %3D

注:此文章仅对碰到和我一样问题的伙伴有用,有问题欢迎指出。

### URL转义字符的相关知识及使用方法 #### 什么是URL转义字符? 在URL中,某些特殊字符无法被直接传递,因为它们可能具有特定的意义或功能。为了能够在URL中安全地传输这些字符,通常会对它们进行转义处理。转义的方式通常是通过`%`加上该字符的ASCII十六进制值来表示。 例如,空格URL中可以被转义为`+`或者`%20`[^2]。 --- #### 常见的URL转义字符及其编码 以下是常见的URL特殊字符以及对应的转义编码: | 特殊字符 | 转义后的形式 | |----------|--------------| | `:` | `%3A` | | `/` | `%2F` | | `?` | `%3F` | | `%` | `%25` | | `#` | `%23` | | `&` | `%26` | | `=` | `%3D` | | 空格 | `%20` 或 `+` | 以上表格列出了部分常用的URL转义字符及其编码方式。 --- #### 如何在程序中实现URL转义? ##### Java中的URL转义 在Java中,可以通过`URLEncoder.encode()`函数对字符串进行URL转义。例如: ```java import java.net.URLEncoder; import java.nio.charset.StandardCharsets; public class Main { public static void main(String[] args) throws Exception { String input = "https://example.com/path with spaces"; String encodedUrl = URLEncoder.encode(input, StandardCharsets.UTF_8); System.out.println(encodedUrl); // 输出: https%3A%2F%2Fexample.com%2Fpath+with+spaces } } ``` 上述代码展示了如何将含有空格其他特殊字符的URL转换为其转义形式[^3]。 --- ##### JavaScript中的URL转义 JavaScript提供了内置的方法用于处理URL转义,比如`encodeURIComponent()``decodeURIComponent()`。下面是一个简单的例子: ```javascript const originalString = "https://example.com/path with spaces?"; const encodedString = encodeURIComponent(originalString); console.log(encodedString); // 输出: https%3A%2F%2Fexample.com%2Fpath%20with%20spaces%3F ``` 此示例演示了如何利用JavaScript内置函数完成URL字符串的转义操作[^1]。 --- #### 实际应用场景举例 当向服务器发送请求时,如果参数中含有特殊字符,则需要对其进行转义以确保数据能够正确传递并被解析。例如,在GET请求中,查询字符串可能会包含如下内容: ``` http://example.com/search?q=hello world&sort=desc ``` 其中,“hello world”中的空格应被替换为`+`或`%20`,最终形成合法的URL: ``` http://example.com/search?q=hello%20world&sort=desc ``` 这种情况下,客户端需负责对输入的数据执行必要的转义操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值