curl (3) Illegal characters found in URL

摘要

在windows 中编辑的文件上传到 Linux 后,使用 curl 等工具调用时会报一个curl: (3) Illegal characters found in URL 的错误,这是因为 Linux 与 Windows 在文本文件中添加的换行符不一样。Linux 在每行只会添加一个\n,Windows系统会在每行后加入\r\n, 所以在 Windows 下的文件放到 Linux上时就会出现这个问题,即多了一个\r

解决办法

转换文件

# 删除test.sh文件中的'\r'字符,并输出到testWithoutR.sh文件中。
tr -d '\r'  test.sh > testWithoutR.sh

拓展:换行符CRLF (carriage return/line feed, 0d 0a)

换行符可能用到的字符(基于十六进制而言):

0x0d => \r, carrige return:回车(CR), 把光标移到同一行的顶头。
0x0a => \n, new line:换行(LF), 把光标移到下一行。


在不同的操作系统这几个字符表现不同,比如在WIN系统下,这两个字符就是表现的本义,在UNIX类系统,换行\n就表现为光标下一行并回到行首,在MAC上,\r就表现为回到本行开头并往下一行,至于ENTER键的定义是与操作系统有关的。

系统换行符
Windows\r\n
UNIX类\n
MAC\r

需要注意的是

虽然不同系统使用的换行符不同,但是因为这两个字符都是控制字符(不可打印),因此即使有时候弄混了,也可能显示不出来。但是出现🐛的可能性非常大!!!

换行符不同可能出现的情况(1,2在MINGW64 git bash中):

  1. \ No newline at end of file:文末没有换行。
  2. ^M:Windows格式的换行符显示在git bash中,会出现这个字符。
  3. Linux文本在Windows中打开,会变成只有一行。

注意

如果需要将文件上传到linux,建议使用一个可以设置使用何种换行符的编辑器,EditPlus就不行,它是以文中哪种换行符比较多为标准,自动探测使用何种换行符的;建议使用Notepad++!


参考:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值