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

比特逐影鹤
• 阅读 779

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

情况

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

curl -o kspf.jpeg https://img-hello-world.oss-cn-beijing.aliyuncs.com/imgs/f53900371e9c09c7ceb14b4c29e742a2.png?a=1&b=2&c=3

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

curl -o kspf.jpeg https://img-hello-world.oss-cn-beijing.aliyuncs.com/imgs/f53900371e9c09c7ceb14b4c29e742a2.png?a=1

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

原因

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

shell 中某些符号被赋予了其他含义
符号含义
&表示任务在后台执行
&&表示前一条命令执行成功时,才执行后一条命令
表示管道,上一条命令的输出,作为下一条命令参数
|| 表示上一条命令执行失败后,才执行下一条命令
............

解决方案

知道特殊字符会被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 https://img-hello-world.oss-cn-beijing.aliyuncs.com/imgs/f53900371e9c09c7ceb14b4c29e742a2.png?a=1%25b=2

原文地址:https://kspf.xyz/archives/155/

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

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
tesseract 安装及使用
1\.安装tesseractOCR,即OpticalCharacterRecognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。tesseract下载地址:https://digi.bib.unimannh
使用皕杰报表遇到的问题小结
一.单元格换行问题reportres\skin\table.css下.sswordbreak:breakall;lineheight:1;在单元格属性,WEB相关设置,CSS样式名里添加ss,选择不作为表达式处理。二.在皕杰报表单元格中显示特殊字符在使用皕杰报表的时候经常遇到特殊字符的输入,比如显示小方块或小方块里带√号,那么这些特殊符合如何输入呢?1、
Stella981 Stella981
3年前
Json特殊字符处理
JSon数据中的String传递数据时,需要处理好特殊字符.JSon数据中有特殊字符:1:引号,如果是使用单引号,来括值的话,那String中 ' 单引号为特殊字符2:正斜杠,反斜杠,换行符号等。另外,必须用(")而非(')表示字符串:/JSON字符串特殊字符处理,比如
Wesley13 Wesley13
3年前
C++中二维数组作为函数参数
在平时,我们经常会遇到将整个数组作为函数参数的情况,一维数组的情况,就是用数组名当形参和实参,传递的是数组的首地址。二维数组我们用的也很多,但是总是有各种问题,今天我总结一下有个很重要的一点,字符串“China”在编译器眼里就是一个地址!操作字符串是通过它在内存中的存储单元的首地址进行的,这是字符串的终极本质如果"China",存储在内存中的0
Stella981 Stella981
3年前
Python 环境搭建
pythonbug集目录\toc\00python模块下载地址pyhton模块下载地址(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.lfd.uci.edu%2F%7Egohlke%2Fpythonlibs%2F)01pythonpip
Stella981 Stella981
3年前
Python基础编程常用模块汇总
3.8<fontcolorredjson模块重点</fontjson模块是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去。不同语言都遵循的一种数据转化格式,即不同语言都使用的特殊字符串。(比如Python的一个列表\1,2,3\利用json转化成特殊的字符串,然后在编码成bytes
Wesley13 Wesley13
3年前
HTML特殊字符大全
使用方法:这些字符属于unicode字符集,所以,你的文档需要声明为UTF8;下面符号列表的后面有两列编号,它们并不太一样,第一列是用于HTML的,你需要在前面加上&符号;第二列可以用于CSS文件中,但是需要用反斜杠\\转义;第二列也可以用于JavaScrip
知识小结
如何在皕杰报表单元格中显示特殊字符呢1、用输入法自带的特殊字符输入,比如:搜狗输入法的特殊字符输入2、利用char函数来处理,比如:用char(9744)来显示小方块,用char(9745)来显示带√号的小方块excel
凿壁偷光 凿壁偷光
2年前
ARM版windows11镜像下载地址
微软全新打造研发的windows11有着极为强大的功能的同时,可以帮助大家轻松的实现各种各样的功能,让每一个人都可以更好的尝试到系统强大带来的方便。借助PD虚拟机,mac电脑也能安装Win11了,小编为大家带来Win11镜像,需要的收藏起来!
语音消息使用 remote 地址在 android 手机上播放失败
由于remote地址中有特殊字符,导致播放报错,可以把地址使用encodeURI转换后即可正常播放。示例代码letinnerAudioContextuni.createInnerAudioContext();innerAudioContext.autopl