jenkins中shell支持的非unicode,python只支持unicode
echo '手机' | tr -d '\n' | xxd -plain | sed 's/../%\1/g' 这样的话中文传参是不乱码了,但是带有_的报错了,例如:
CI_app.XXX.com.cn-5.1.0-450
最终解决方法是
BRANCH_NAME是带中文及_的参数
rt=$(curl -X GET -G --data-urlencode "branch_name=${BRANCH_NAME}" --data-urlencode "project_name=xxxapp" http://ip:port/get_info)
切记,BRANCH_NAME经过上面语句,已经是unicode编码,shell中打印或使用的时候,不能直接使用
同时python应处理收到的参数,否则字符串入库时将为乱码
branch_name1 = request.args.get('branch_name') branch_name =urllib.parse.unquote(branch_name1)