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

如何在curl命令中直接对无查询串URL的路径参数进行URL编码

curl路径参数非ASCII字符自动编码解决方案
  • 原生curl默认不会对URL路径部分的非ASCII字符自动做百分号编码,我们常用的-d/--data-urlencode参数仅支持对请求体、GET查询字符串(?之后的部分)做编码,无法直接处理路径段的内容。直接执行curl https://example.com/mycustom-url/عربي会直接发送未编码的UTF-8字节,绝大多数服务端会返回400类错误。

方案1:curl 7.82.0+ 内置参数实现(最简便)

curl 7.82.0版本新增了--url-encode参数,支持直接对URL的路径部分做编码,不需要额外工具:

# 语法:--url-encode "path:<你的路径段内容>"
curl --url-encode "path:/mycustom-url/عربي" https://example.com

方案2:低版本curl用纯shell实现编码(无额外依赖)

如果你的curl版本低于7.82.0,可以用一段纯bash实现的编码函数,不需要安装任何第三方工具,直接在命令行内完成编码拼接:

# 先定义编码函数(可以写入~/.bashrc后续永久生效)
urlencode() {
  local str="$1"
  local encoded=""
  local len=${#str}
  for ((i=0; i<len; i++)); do
    c=${str:i:1}
    case $c in
      [a-zA-Z0-9.~_-]) encoded+="$c" ;;
      *) printf -v encoded '%s%%%02X' "$encoded" "'$c" ;;
    esac
  done
  echo "$encoded"
}

# 调用时直接拼接路径即可
curl "https://example.com/mycustom-url/$(urlencode "عربي")"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:18:01