现在手上有一个短信发送的接口,只需要post请求就可以,内容通过url中的querystring中content字段确定
function send_sms()
{
curl "xxxxxx.com?content=$1"
}
现在的问题是因为传入的content经常会有空格,或者一些非法符号,会导致发送失败。经过试验只要将content转换为编码以后的字符串就可以,比如说"北京 上海",替换成"%e5%8c%97%e4%ba%ac++%e4%b8%8a%e6%b5%b7"就可以正常发送了,想请问下shell中可以做到吗?
这种字符串是把汉字转换成了utf-8,如果你是在shell里面发送请求可以用
curl
命令自带的编码选项,下面是一个转码并用get方式请求百度的例子如果你只是需要用shell来获取转换后的字符串,需要用shell命令来模拟转换过程,或者通过shell调用机器上其他语言的函数库中urlencode的实现来获得转换后的结果,比如用node
网上也有一些纯shell命令来实现的urlencode,不过正确性需要自己考察