在Windows CMD FOR循环中使用youtube-dl去除非ASCII字符

问题描述 投票:2回答:1

直接在CMD中使用youtube-dl运行命令可以正常工作:

youtube-dl -e "https://www.youtube.com/watch?v=E_JXrNAxGzM"

正确给出了Youtube视频的标题:27/12/2016晚间新闻杨家骏直播睇手机

但是,如果我在Windows批处理文件中使用FOR循环使用相同的命令,则将完全删除非ASCII字符。批处理文件代码:

@ECHO OFF
FOR /F "delims=" %%i IN ('youtube-dl -e "https://www.youtube.com/watch?v=E_JXrNAxGzM"') DO (
ECHO %%i
)
PAUSE
EXIT

仅给出此结果:27/12/2016

作为测试,我尝试了这个:

set var=晚間新聞楊家駿直播睇手機

for %%i in (%var%) do (
echo %%i
)

[可以正常工作并且echos the Chinese characters correctly,这使我相信这不是CMD中的Unicode问题,而是与youtube-dl捆绑在一起。

但是,我已经确定它是not a youtube-dl problem

我是否缺少某些东西,并且有什么方法可以使它正常工作?

windows for-loop batch-file cmd youtube-dl
1个回答
0
投票

--encoding utf-8开关似乎在这里与chcp 65001一起使用(免责声明:仅在win10 v1909下使用带有NSimSun字体的非传统控制台,在ymmv以及其他版本或设置下才尝试使用。)>

C:\etc>chcp 65001
Active code page: 65001

C:\etc>for /f "delims=" %i in ('youtube-dl --encoding utf-8 -e "https://www.youtube.com/watch?v=E_JXrNAxGzM"') do @echo %i
27/12/2016 晚間新聞 楊家駿直播睇手機

________

但是,我确信这不是youtube-dl问题。

向开发人员询问的真正问题是,youtube-dl是否对发送到交互式控制台的输出流进行任何检测,而不是对管道文件或重定向文件进行检测,以及是否基于该检测来更改输出编码。我相信答案可能是肯定的,这可以解释直接控制台输出与for循环之间的区别。

© www.soinside.com 2019 - 2024. All rights reserved.