zoukankan      html  css  js  c++  java
  • 通过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

    希望大家有用。

  • 相关阅读:
    Arduino uno 教程~持续更新~
    Arduino uno LED灯实验
    Arduino uno 引脚说明
    面包板的使用
    数量经济学推荐的Julia教程
    已知一点经纬度和距离,方位角;求另外一点的经纬度
    a recipe kindly provided by Dimas for kikuchi
    发现了拯救“文献多的一团麻”的工具
    matlab中diff的用法
    matlabR2017安装
  • 原文地址:https://www.cnblogs.com/westfly/p/10178367.html
Copyright © 2011-2022 走看看