curl 下载地址中有特殊字符解决方案

情况

使用 curl 下载 地址中带有 特殊字符的时候 比如下面这个地址。实际访问地址不正确,参数丢失问题

curl -o kspf.jpeg //img1.sycdn.imooc.com/6284bb890001e35806400905.png?a=1&b=2&c=3

上面这个 url 实际上在服务端接受的参数只有 a = 1 ,造成在服务器端接收的时候经常出现数据丢失的情况

curl -o kspf.jpeg //img1.sycdn.imooc.com/6284bb890001e35806400905.png?a=1

为什么会出现这个问题呢?因为 & 在 shell 中 表示任务在后台执行

原因

在url中直接使用特殊符号会截断命令让命令失去原本意义.

符号含义
&表示任务在后台执行
&&表示前一条命令执行成功时,才执行后一条命令
表示管道,上一条命令的输出,作为下一条命令参数
||

解决方案

知道特殊字符会被liunx 识别为命令符,所以我们需要编码转义特殊符号

url 常用字符及对应编码表

字符URL编码值
空格%20
"%22
#%23
%%25
&%26
(%28
)%29
+%2B
,%2C
/%2F
:%3A
;%3B
<%3C
=%3D
>%3E
?%3F
@%40
\%5C
%7C
# 根据上面表格我们把最终的命令为下面这样
curl -s -o kspf.jpeg //img1.sycdn.imooc.com/6284bb890001e35806400905.png?a=1%25b=2

alt 狐妖小红娘

作者:|慕侠3484550|,原文链接: http://www.imooc.com/article/325547

文章推荐

程序分析与优化 - 5 指针分析

Spring Boot整合Swagger报错:"this.condition" is null

一文学完Linux Shell编程,比书都好懂

搞定了!OAuth2使用验证码进行授权

就是 Spring 设计了一个lx.gongxuanwang.com

python多线程同步售票系统解决思路

CentOS 8及以上版本配置IP的方法,你 get 了吗

探讨生产环境下缓存雪崩的几种场景及解决方案

MongoDB是什么?非关系型数据库的优点?安装使用教程

【组件封装】改造 Element-UI 多选框组件 (el-check

Centos 安装 docker

认识并安装WSL