问题描述
在使用curl向某个web中转服务发送数据时,由于数据中包含很多特殊的符号,导致数据到达后部分丢失
例如在发送包含加号的数据时会自动转换成空格
问题分析
既然数据中包含复杂数据,那么只需将其编码转换成不复杂的数据即可
最先想到的是用base64,但是base64中的加号会被转换成空格
所以在接收端又将空格全部替换成了加号
最后使用这种方式也解决了问题,但是不够优雅
最后在前辈的指导下才想起可以用urlencode进行编码,它可以直接将特殊字符转换
问题解决
使用curl 的 urlencode进行编码发送数据
curl $data_receiver -X POST --data-urlencode "message=${line}"