找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 59675|回复: 21

[网络连接] 批处理利用curl获取的信息echo显示后是乱码

[复制链接]
发表于 2022-11-4 20:46:32 | 显示全部楼层 |阅读模式
如题,保存的脚本格式是ANSI的,单独用curl配合echo后保存进txt内的中文内容是可以正常显示的,单独的curl返回的也是正常的用指定utf-8的命令后问题依旧是这样的,只要写进脚本返回的全是乱码,代码如下:
  1. 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
发表于 2022-11-4 21:14:33 | 显示全部楼层
  1. curl --create-dirs -o "index.html" myip.ipip.net
复制代码
查看返回的文件格式为utf-8,,所以会显示乱码
 楼主| 发表于 2022-11-4 21:28:01 | 显示全部楼层
回复 2# hlzj88


    感谢大佬回复,那要怎么转换或者支持正确显示呢?还有想不通的是,为什么手动输入命令都是可以正常显示,只有写进脚本里就乱码呢?
发表于 2022-11-4 21:50:03 | 显示全部楼层
  1. @echo off
  2. curl --create-dirs -o "index.txt" myip.ipip.net
  3. iconv -c -f utf-8 -t GBK index.txt>>gbindex.txt
  4. cls
  5. type gbindex.txt
  6. del *index*
  7. pause
复制代码
如果需要你for显示的内容,把type gbindex.txt放括号内,iconv 在本论坛下载
 楼主| 发表于 2022-11-4 21:53:02 | 显示全部楼层
回复 4# hlzj88


    感谢大佬,看来是无法直接转换是吧,只能通过往复读取和利用第三方程序才可以了?
发表于 2022-11-4 22:13:23 | 显示全部楼层
回复 5# 459500160
其他大佬能,我能力有限,不能。
 楼主| 发表于 2022-11-4 22:49:09 | 显示全部楼层
回复 6# hlzj88


    感谢大佬回复,我再慢慢研究看看,也期待其他大佬能有其它的解决方法
发表于 2022-11-5 08:56:38 | 显示全部楼层
将下面代码保存为ANSI编码:
  1. @echo off
  2. chcp 65001
  3. for /f "delims=:  tokens=1" %%n in ('curl -s myip.ipip.net^|findstr " IP"') do echo    Outside the web address:%%n
  4. pause
复制代码
发表于 2022-11-5 08:57:21 | 显示全部楼层
回复 1# 459500160


test.bat 保存为UTF-8编码再执行
  1. @echo off
  2. chcp 65001 >nul
  3. for /f "delims=:" %%n in ('curl -s myip.ipip.net ^| findstr "IP"') do (
  4.     echo 外网地址:%%n
  5. )
  6. pause
复制代码
 楼主| 发表于 2022-11-5 14:47:35 | 显示全部楼层
回复 8# qixiaobin0715


    感谢大佬,这个方法解决了echo显示问题,但并没有把获取的地址截取出来,而且脚本内的中文却变成了乱码
 楼主| 发表于 2022-11-5 16:47:30 | 显示全部楼层
回复 9# Batcher


    感谢大神,解决了,但将bat保存成uft-8后脚本运行就变成一行一行的了,只有在ANSI编码下才能正常显示想要的内容,想问问这代码下的中文应该怎么操作才能让它正确显示呢?
  1. @echo off
  2. chcp 65001 >nul
  3. for /f "tokens=2" %%a in ('curl -s myip.ipip.net') do echo 外网%%a
  4. for /f "tokens=4" %%b in ('curl -s myip.ipip.net') do echo 所在地为:%%b
  5. pause
复制代码
发表于 2022-11-5 17:14:18 | 显示全部楼层
  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. (Invoke-WebRequest -Uri "myip.ipip.net").content
复制代码
 楼主| 发表于 2022-11-5 18:13:30 | 显示全部楼层
回复 12# pd1


感谢大神回复,但这代码完全看不懂,以为是powshell的,改成psl后也无法运行
发表于 2022-11-5 21:17:42 | 显示全部楼层
回复 13# 459500160

.bat运行就可以
 楼主| 发表于 2022-11-5 21:30:20 | 显示全部楼层
回复 14# pd1


    无法运行,提示powershell不是内部或外部命令
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 14:28 , Processed in 0.022223 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表