zl程序教程

您现在的位置是:首页 >  Java

当前栏目

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

2023-02-18 16:42:49 时间

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

情况

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

curl -o kspf.jpeg https://kspf.xyz/images/logo.svg?a=1&b=2&c=3

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

curl -o kspf.jpeg https://kspf.xyz/images/logo.svg?a=1

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

原因

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

shell 中某些符号被赋予了其他含义

符号

含义

&

表示任务在后台执行

&&

表示前一条命令执行成功时,才执行后一条命令

表示管道,上一条命令的输出,作为下一条命令参数

||

表示上一条命令执行失败后,才执行下一条命令

解决方案

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

url 常用字符及对应编码表

字符

URL编码值

空格

%20

"

%22

#

%23

%

%

&

%26

(

%28

)

%29

+

+

,

%2C

/

%2F

:

%3A

;

%3B

<

%3C

=

%3D

>

%3E

?

%3F

@

%40

\

%5C

%7C

# 根据上面表格我们把最终的命令为下面这样
curl -s -o kspf.jpeg https://kspf.xyz/images/logo.svg?a=1%25b=2