1. 程式人生 > >通過Curl 對url進行encode操作

通過Curl 對url進行encode操作

最近做專案的時候,通過 Gflags Reload 時候 發現對於某些value中包含=%中文等字元的支援不夠好,value被截斷了。

經過分析後,發現程式對url切分是用=&為標準的,如果value中帶有這樣的特殊字元,必然導致截斷。

解決的方法也很簡單,框架預設對value進行進行了urldecode的操作,所以在進行請求的時候,只需要對value進行urlencode就好。

有了思路後,就好解決了。因為希望依賴不多,就避免採用了python php perl之類的語言。在gist找到一個通過shell來操作的。

https://gist.github.com/cdown/1163649/8a35c36fdd24b373788a7057ed483a5bcd8cd43e

這個方案能夠解決特殊字元的問題,但對中文的支援有問題。

於是用搜索到了,https://blog.longwin.com.tw/2017/12/bash-shell-curl-send-urlencode-args-2017/

 

這個是採用curl命令,考慮到我們reload也是curl來的,就copy來了,但文章的程式碼有點問題,於是改寫如下

 

function urlencode() {
    local data
    if [[ $# != 1 ]]; then
        echo "Usage: $0 string-to-urlencode"
return 1 fi data="$(curl -s -o /dev/null -w %{url_effective} --get --data-urlencode "$1" "")" if [[ $? == 0 ]]; then echo "${data##/?}" fi return 0

 

https://gist.github.com/westfly/ed7e25ee4353751d94132f92837a7074

 

希望大家有用。