通過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

 

希望大家有用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM