You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Python subprocess调用yt-dlp无法获取非ASCII字符

解决Windows下yt-dlp重定向/Subprocess调用丢失韩文的问题

问题原因

yt-dlp直接输出到CMD终端时,会自动适配当前终端的代码页(比如你设置的949)显示韩文,但当输出被重定向到文件或通过Python subprocess调用时,它不会自动切换到通用编码(如UTF-8),而是沿用终端代码页的编码逻辑,导致韩文字符无法被文件或Python正确解析,最终显示为空格。

echo命令正常是因为Windows CMD对echo的重定向编码处理逻辑和yt-dlp不同,会自动适配输出场景;而直接下载时文件名正常,是因为yt-dlp处理文件名采用了独立的编码适配逻辑,不受终端输出编码设置影响。

解决方案

1. CMD重定向到文件时的处理

在yt-dlp命令中添加--encoding utf-8参数,强制输出UTF-8编码内容:

yt-dlp --flat-playlist -i --encoding utf-8 --print title PLySOINx0fqvYr6s8aGdqaK9j8_CAWcP5U > output.txt

打开output.txt时选择UTF-8编码即可正常查看韩文。

2. Python Subprocess调用时的处理

同样添加--encoding utf-8参数,并在subprocess中指定UTF-8编码接收输出:

import subprocess

cmd = [
    'yt-dlp', '--flat-playlist', '-i', '--encoding', 'utf-8',
    '--print', 'title', 'PLySOINx0fqvYr6s8aGdqaK9j8_CAWcP5U'
]
result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8')

# 打印或处理结果
print(result.stdout)

额外说明

之前切换代码页65001(UTF-8)无效,是因为即使终端代码页设为UTF-8,yt-dlp在非终端输出场景下仍可能未正确适配,手动指定--encoding utf-8是最直接可靠的方式。

内容的提问来源于stack exchange,提问作者S.M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:04:50