标题: [网络连接] 批处理利用curl获取的信息echo显示后是乱码 [打印本页]
作者: 459500160 时间: 2022-11-4 20:46 标题: 批处理利用curl获取的信息echo显示后是乱码
如题,保存的脚本格式是ANSI的,单独用curl配合echo后保存进txt内的中文内容是可以正常显示的,单独的curl返回的也是正常的用指定utf-8的命令后问题依旧是这样的,只要写进脚本返回的全是乱码,代码如下:- for /f "delims=: tokens=1" %%n in ('curl -s myip.ipip.net^|findstr " IP"') do echo 外网地址:%%n
复制代码
折腾好久也不知道问题到底出在哪里了,望群里的大佬能帮忙解惑下,curl返回的内容如下:
当前 IP:156.240.101.109 来自于:中国 香港 cloudinnovation.org
作者: hlzj88 时间: 2022-11-4 21:14
- curl --create-dirs -o "index.html" myip.ipip.net
复制代码
查看返回的文件格式为utf-8,,所以会显示乱码
作者: 459500160 时间: 2022-11-4 21:28
回复 2# hlzj88
感谢大佬回复,那要怎么转换或者支持正确显示呢?还有想不通的是,为什么手动输入命令都是可以正常显示,只有写进脚本里就乱码呢?
作者: hlzj88 时间: 2022-11-4 21:50
- @echo off
- curl --create-dirs -o "index.txt" myip.ipip.net
- iconv -c -f utf-8 -t GBK index.txt>>gbindex.txt
- cls
- type gbindex.txt
- del *index*
- pause
复制代码
如果需要你for显示的内容,把type gbindex.txt放括号内,iconv 在本论坛下载
作者: 459500160 时间: 2022-11-4 21:53
回复 4# hlzj88
感谢大佬,看来是无法直接转换是吧,只能通过往复读取和利用第三方程序才可以了?
作者: hlzj88 时间: 2022-11-4 22:13
回复 5# 459500160
其他大佬能,我能力有限,不能。
作者: 459500160 时间: 2022-11-4 22:49
回复 6# hlzj88
感谢大佬回复,我再慢慢研究看看,也期待其他大佬能有其它的解决方法
作者: qixiaobin0715 时间: 2022-11-5 08:56
将下面代码保存为ANSI编码:- @echo off
- chcp 65001
- for /f "delims=: tokens=1" %%n in ('curl -s myip.ipip.net^|findstr " IP"') do echo Outside the web address:%%n
- pause
复制代码
作者: Batcher 时间: 2022-11-5 08:57
回复 1# 459500160
test.bat 保存为UTF-8编码再执行- @echo off
- chcp 65001 >nul
- for /f "delims=:" %%n in ('curl -s myip.ipip.net ^| findstr "IP"') do (
- echo 外网地址:%%n
- )
- pause
复制代码
作者: 459500160 时间: 2022-11-5 14:47
回复 8# qixiaobin0715
感谢大佬,这个方法解决了echo显示问题,但并没有把获取的地址截取出来,而且脚本内的中文却变成了乱码
作者: 459500160 时间: 2022-11-5 16:47
回复 9# Batcher
感谢大神,解决了,但将bat保存成uft-8后脚本运行就变成一行一行的了,只有在ANSI编码下才能正常显示想要的内容,想问问这代码下的中文应该怎么操作才能让它正确显示呢?- @echo off
- chcp 65001 >nul
- for /f "tokens=2" %%a in ('curl -s myip.ipip.net') do echo 外网%%a
- for /f "tokens=4" %%b in ('curl -s myip.ipip.net') do echo 所在地为:%%b
- pause
复制代码
作者: pd1 时间: 2022-11-5 17:14
- <# :
- @echo off
- powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
- pause
- #>
- (Invoke-WebRequest -Uri "myip.ipip.net").content
复制代码
作者: 459500160 时间: 2022-11-5 18:13
回复 12# pd1
感谢大神回复,但这代码完全看不懂,以为是powshell的,改成psl后也无法运行
作者: pd1 时间: 2022-11-5 21:17
回复 13# 459500160
.bat运行就可以
作者: 459500160 时间: 2022-11-5 21:30
回复 14# pd1
无法运行,提示powershell不是内部或外部命令
作者: pd1 时间: 2022-11-5 22:31
回复 15# 459500160
作者: aloha20200628 时间: 2022-11-6 12:30
有两点提示仅供参考》
一。for /f "..." 限定表达式中的格式有些讲究,分割器 delims= 被建议放在令牌 tokens= 后面,如 "tokens=1-4 delims=: ",若反其之 "delims=: tokens=1-4" 则分割器中的空格就会被忽略。
二。批处理脚本(代码+注释)如果不含标准ascii码之外的字符如中文等,其存盘采用的编码是默认的ansi/936(gbk)还是utf-8,均可,因为二者编码都会兼容标准ascii码字符。但如果脚本运行期间需要屏显临时产生的文本数据(无论是读入的文件数据还是下载的网页数据),其屏显结果是否出现乱码就要被当前码页(936或65001)的“一致性”管控了。
作者: Batcher 时间: 2022-11-6 17:17
回复 15# 459500160
什么系统?XP? Win7? Win10?
作者: 459500160 时间: 2022-11-6 19:39
回复 18# Batcher
win10 ltsc 2019
作者: 459500160 时间: 2022-11-6 19:47
回复 16# pd1
无法上传截图,也是醉了,45kb还是提示失败。。。。
作者: 459500160 时间: 2022-11-6 19:49
回复 17# aloha20200628
感谢大大的科谱,记下了,已经放弃转换字符编码了,我现在的能力研究它还是比较费劲的
作者: Batcher 时间: 2022-11-7 10:02
回复 20# 459500160
如果需要上传文件,可以用阿里云盘或百度网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |