欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > linux >内容正文

linux

linux如何get请求urlencode,如何为curl命令urlencode数据?

发布时间:2025/3/20 linux 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 linux如何get请求urlencode,如何为curl命令urlencode数据? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

这是纯粹的BASH答案。rawurlencode() {

local string="${1}"

local strlen=${#string}

local encoded=""

local pos c o  for (( pos=0 ; pos

c=${string:$pos:1}

case "$c" in

[-_.~a-zA-Z0-9] ) o="${c}" ;;

* )               printf -v o '%%%02x' "'$c"

esac

encoded+="${o}"

done

echo "${encoded}"    # You can either set a return variable (FASTER)

REPLY="${encoded}"   #+or echo the result (EASIER)... or both... :p}

您可以通过两种方式使用它:easier:  echo http://url/q?=$( rawurlencode "$args" )faster:  rawurlencode "$args"; echo http://url/q?${REPLY}

[编辑]

这是匹配的rawurldecode()函数,它具有所有的谦虚性,非常棒。# Returns a string in which the sequences with percent (%) signs followed by# two hex digits have been replaced with literal characters.rawurldecode() {

# This is perhaps a risky gambit, but since all escape characters must be

# encoded, we can replace %NN with \xNN and pass the lot to printf -b, which

# will decode hex for us

printf -v REPLY '%b' "${1//%/\\x}" # You can either set a return variable (FASTER)

echo "${REPLY}"  #+or echo the result (EASIER)... or both... :p}

通过匹配集,我们现在可以执行一些简单的测试:$ diff rawurlencode.inc.sh \        

如果你真的觉得你需要一个外部工具(好吧,它会更快,可能会做二进制文件等......)我在OpenWRT路由器上发现了这个......replace_value=$(echo $replace_value | sed -f /usr/lib/ddns/url_escape.sed)

url_escape.sed是包含以下规则的文件:# sed url escapings:%:%25:g

s: :%20:g

s:<:>

s:>:%3E:g

s:#:%23:g

s:{:%7B:g

s:}:%7D:g

s:|:%7C:g

s:\\:%5C:g

s:\^:%5E:g

s:~:%7E:g

s:\[:%5B:g

s:\]:%5D:g

s:`:%60:g

s:;:%3B:g

s:/:%2F:g

s:?:%3F:g

s^:^%3A^g

s:@:%40:g

s:=:%3D:g

s:&:%26:g

s:\$:%24:g

s:\!:%21:g

s:\*:%2A:g

总结

以上是生活随笔为你收集整理的linux如何get请求urlencode,如何为curl命令urlencode数据?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。