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

Windows 10下DIR命令输出俄/中文字符显示为???的原因

问题原因分析与解决办法

这个问题的核心在于Windows命令提示符(CMD)和资源管理器使用了完全不同的字符编码体系,具体拆解如下:

为什么资源管理器正常,CMD却显示????

  • Windows资源管理器基于系统统一的Unicode(UTF-16)编码工作——这是Windows内部通用的字符标准,不管是中文、俄文还是其他任何Unicode字符,它都能完美识别和处理,所以你能在资源管理器里给文件重命名为俄文完全没问题。
  • 而CMD默认使用的是OEM代码页:比如中文系统默认是代码页936(对应GBK编码),俄文系统是866。这种编码只包含对应语言的有限字符集,当遇到不在这个编码范围内的字符时,就会用???来替代。你执行dir命令时,输出是按照当前CMD的代码页编码的,所以那些非罗马字符(比如俄文、甚至其他语言的中文)就会变成问号。

哪怕你安装了俄语言包,CMD的默认代码页也不会自动切换到支持多语言的编码——它还是会坚守自己的OEM代码页,这就是问题的根源。

解决办法

如果你想正确导出包含多语言字符的目录列表,可以试试这几个方法:

1. 让CMD切换到UTF-8编码

先执行命令切换编码:

chcp 65001

然后再执行你的目录导出命令:

dir /a:d /s /b >> tom-music-2016-july.txt

⚠️ 注意:切换到UTF-8后,建议把CMD的字体改成Consolas或者Lucida Console(右键CMD窗口标题栏→属性→字体),否则部分字符可能显示异常。

2. 用PowerShell代替CMD(更推荐)

PowerShell天生支持Unicode,执行这条命令就能导出正确的目录列表:

Get-ChildItem -Directory -Recurse | Select-Object -ExpandProperty FullName | Out-File tom-music-2016-july.txt -Encoding UTF8

导出的文件用任何文本编辑器打开都能看到正确的多语言字符。

3. 让CMD以Unicode格式输出

直接用cmd /u参数强制CMD以UTF-16编码输出,再导出到文件:

cmd /u /c "dir /a:d /s /b" >> tom-music-2016-july.txt

这样生成的文件是UTF-16格式,用记事本打开就能正常显示所有字符。

内容的提问来源于stack exchange,提问作者rjnagle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:23:58