【shell命令|Shell命令(curl之手动给中文参数编码)】我们想用curl
发送一个get请求,并附带一个中文参数。
若直接发送,中文可能会乱码:
curl "www.ipaddr.com?name=张三&age=26"
# 或
curl -G \
--data-urlencode "name=张三" \
--data-urlencode "age=26" \
"www.ipaddr.com"
以下是一种解决方案。
先看java程序:
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
public static void main(String[] args) throws UnsupportedEncodingException {
String encodeURL = URLEncoder.encode("张三", "UTF-8");
System.out.println(encodeURL);
String decodeURL = URLDecoder.decode(encodeURL, "UTF-8");
System.out.println(decodeURL);
String noEncode = URLDecoder.decode("abc234", "UTF-8");
System.out.println(noEncode);
}
输出:
%E5%BC%A0%E4%B8%89
张三
abc234
我们可以用shell对中文实现同样的编码:
value=https://www.it610.com/article/`echo -n"张三" | xxd -ps | tr -d '\n' | sed -r 's/(..)/%\1/g'`
echo $value # %e5%bc%a0%e4%b8%89# 然后用curl传递编码后的参数
curl -G \
--data-urlencode "name=${value}" \
--data-urlencode "age=26" \
"www.ipaddr.com"
这样只要在后台对参数进行url解码,就能获取到传递的参数了,不会乱码。
另外用curl请求一个网址,如果由于各种原因服务器响应时间很长,curl会挂起等待很久,这个时间可以设置:
--max-time 3 # 单位是秒
推荐阅读
- Java磨刀不误砍柴工|Windows安装curl及基本命令
- 3-SSM三大框架|Spring框架从入门到精通
- 浙师大506实验室|软件创新实验室(Spring框架)
- Spring|Spring框架学习心得(1)
- spring|Spring框架七大核心模块
- java|程序、进程、线程、协程以及单线程、多线程基本概念
- 【超详细】手把手教你ElasticSearch集群搭建
- #|第9章 类加载及执行子系统的案例与实战
- ElasticSearch笔记|#ElasticSearch笔记#利用ElasticSearch实现全文搜索(一)简单介绍及环境搭建