You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Shell脚本中对含特殊字符的URL进行编码的简便方法

可行的URL编码工具方案

以下是几个无需手动编写复杂替换规则的现成工具,直接满足你的需求:

1. Python 内置模块(推荐)

利用Python自带的urllib.parse.quote函数,一行命令即可完成标准URL编码,无需额外安装依赖:

# 处理带空格的字符串
arg=$(python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))" "This has spaces")
# 执行请求
curl "https://example.com/some-service?arg=$arg"

该方法会自动处理所有URL需要编码的特殊字符(如空格、&、?、=等),完全符合RFC规范。

2. jq 工具

如果你的系统已安装jq(常用JSON处理工具),可使用它的@uri过滤器实现编码:

arg=$(jq -nr --arg input_str "This has spaces" '$input_str | @uri')
curl "https://example.com/some-service?arg=$arg"

3. urlencode 命令(部分Linux发行版自带)

部分系统(如Debian/Ubuntu)的cgi-bin工具包包含urlencode命令,直接调用即可:

# 若未安装,先执行:sudo apt install cgi-bin
arg=$(urlencode "This has spaces")
curl "https://example.com/some-service?arg=$arg"

额外技巧:让curl直接处理参数

如果只是要给curl传递参数,无需提前编码,可使用--data-urlencode选项让curl自动处理:

# POST请求方式
curl "https://example.com/some-service" --data-urlencode "arg=This has spaces"
# GET请求方式
curl "https://example.com/some-service?$(printf "arg=%s" "This has spaces" | curl -G -o /dev/null -w %{url_effective} --data-urlencode @- "")"

内容的提问来源于stack exchange,提问作者Troy Daniels

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:52:05