Почему команда Windows DIR выдает символы ??? вместо русского алфавита?

Почему команда Windows DIR выдает символы ??? вместо русского алфавита?

На компьютере с Windows 10 через командную строку я запускаю следующую команду:
C:\Users\idiot\Music>dir /a:d /s /b >> tom-music-2016-июль.txt

Целью является перечисление всех каталогов. Но я заметил, что каталоги с нелатинскими буквами в имени будут печатать ????? вместо русских или китайских символов. Почему?

Сначала я думал, что проблема в системных шрифтах. (У меня не установлен русский языковой пакет). Но я могу переименовывать файлы на русские имена в проводнике Win. Важно, что когда я запускаю команду DIR в окне (без перенаправления ее в выходной файл), яможно ясно видеть русские символы.

Это говорит мне о том, что проблема либо в команде, которая передает что-то в файл, либо в текстовом редакторе Windows, который пытается прочитать вывод.

Я пробовал открыть файл в двух отдельных текстовых редакторах и даже в веб-браузере, но все равно вижу знаки вопроса.

Может ли кто-нибудь подсказать причину этой проблемы и возможное решение?

Правильно ли я понимаю, что мне не нужно будет выполнять какую-либо обработку самих файлов или каталогов? Спасибо.

Постскриптум:Меня особенно озадачивает, почему русские символы нормально отображаются в окне консоли, но когда они передаются в файл, я вижу вопросительные знаки.

решение1

Ничего секретного: кодировка файла, созданного с помощью >перенаправления, следует текущей активной кодовой странице cmd. ?(Вопросительный знак) — это просто замена (маркер замены), если символ отсутствует в такой кодовой странице.

Решение: использовать UTF-8(код страницы 65001)какchcp 65001

Следующий пример иллюстрирует (и, возможно, доказывает) это довольно хорошо:

d:\bat\UnASCII Names> chcp 1250
Active code page: 1250

d:\bat\UnASCII Names> dir /b /AD >dir1250.txt

d:\bat\UnASCII Names> chcp 65001
Active code page: 65001

d:\bat\UnASCII Names> dir /b /AD >dir65001.txt

Файлы dir1250.txtи dir65001.txtоткрытые в Notepad++:

перенаправление и кодирование

Обратите внимание, чтотак называемыеANSIв моем регионе кодовая страница 1250 (Центральная Европа), а у вас она может быть, например, 1252 (США и Западная Европа)…

Связанный контент