直接在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

仅给出以下结果: 2016年12月27日

作为测试,我尝试了以下方法:
set var=晚間新聞楊家駿直播睇手機

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

可以正常工作并使用echos the Chinese characters correctly,这使我相信这不是CMD中的Unicode问题,而是与youtube-dl相关联。

但是,我已经放心了它是not a youtube-dl problem

有什么我想念的东西吗?

最佳答案

--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是否对发送到交互式控制台的输出流进行任何检测,而不是通过管道还是重定向进行检测,以及是否基于该检测来更改输出编码。我相信答案可能是肯定的,这可以解释直接控制台输出与for循环之间的区别。

关于windows - 在Windows CMD FOR循环中使用youtube-dl会剥离非ASCII字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62270030/

10-14 18:46
查看更多