curl 控制台请求,参数带中文,返回中文乱码问题小结

1.cURL 简介

cURL (CommandLine Uniform Resource Locator) 是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

 

cURL支持的通信协议有FTPFTPSHTTPHTTPSTFTPSFTPGopherSCPTelnet、DICT、FILELDAP、LDAPS、IMAPPOP3SMTPRTSP

 

curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。 [1] 

 

2.请求参数带中文

curl请求中参数带中文,直接拼接地址后,会出现请求地址错误的问题。但是将拼接的地址复制到浏览器中,请求正常。这是因为现在基本所有主流的浏览器都自带url转码功能,就是自动将汉字转换为url编码后的字符。

其实只要手动转换下参数中的汉字就行了。

  • 代码中:使用urlencode需要传参的字符,拼接后就行,其他参数及域名原样传输。
  • 控制台:可以使用在线工具进行转码。例如:https://tool.oschina.net/encode?type=4

将请求中的中文“王老吉”,替换成转码后字符。

curl -X GET "http://xx.xx.xx.xx:5000/luis/v2.0/apps/apiq=王老吉&staging=false&timezoneOffset=0&verbose=false&log=true"

curl -X GET "http://xx.xx.xx.xx:5000/luis/v2.0/apps/apiq=%E7%8E%8B%E8%80%81%E5%90%89&staging=false&timezoneOffset=0&verbose=false&log=true"

 

3.请求返回中文乱码

CMD命令行运行窗口应该是用操作系统的编码,windows中文环境的编码是GBK。如果网页是其他的编码(比如UTF-8),curl某一个URL时候出现中文乱码,解决方法如下:

下载 iconv    : ICONV官网

即通过iconv插件设置请求返回的charset。

下载地址http://gnuwin32.sourceforge.net/packages/libiconv.htm


安装exe文件,设置环境变量,将安装目录下的bin目录添加到path中

比如我的是D:\Program Files (x86)\GnuWin32\bin

最后输入命令curl www.baidu.com | iconv -f utf-8 -t gbk即可
 

PowerShell编码问题:

PowerShell 的默认编码因版本而异:

  • 在 PowerShell 6+ 中,默认编码在所有平台上都是不具有 BOM 的 UTF-8。
  • 在 Windows PowerShell 中,默认编码通常是 Windows-1252,这是拉丁语-1 的扩展,也称为 ISO 8859-1。

查找默认编码的脚本,可以参考这里: PowerShell 6.0 官方文档中文版

 

参考:

1.百度百科 https://baike.baidu.com/item/curl/10098606?fr=aladdin

2.PowerShell 6.0 官方文档中文版: https://www.bookstack.cn/read/powershell-6-zh/64.md

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值