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数据?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016二级c语言笔试内容,2016年计
- 下一篇: linux 初始化内存管理_Linux内