Por que o comando DIR do Windows produz ??? caracteres em vez do alfabeto Russo?

Por que o comando DIR do Windows produz ??? caracteres em vez do alfabeto Russo?

Em uma caixa do Windows 10, via linha de comando, executo este comando:
C:\Users\idiot\Music>dir /a:d /s /b >> tom-music-2016-july.txt

O objetivo é listar todos os diretórios. Mas noto que diretórios com letras não romanas no nome serão impressos ????? em vez dos caracteres russos ou chineses. Por que?

Inicialmente pensei que o problema estava nas fontes do sistema. (Não tenho um pacote de idioma russo instalado). Mas posso renomear arquivos para nomes de arquivos russos no Win Explorer. É importante ressaltar que quando executo o comando DIR na janela (sem canalizá-lo para um arquivo de saída), euposso ver claramente os caracteres russos.

Isso implica para mim que o problema está no comando que canaliza algo para um arquivo ou no editor de texto do Windows que está tentando ler a saída.

Tentei abrir o arquivo em dois editores de texto separados e até mesmo em um navegador da web, mas vejo caracteres de ponto de interrogação de qualquer maneira.

Alguém pode sugerir uma causa para este problema e uma possível solução?

Estou correto ao presumir que não precisarei fazer nenhum processamento nos próprios arquivos ou diretórios? Obrigado.

Pós-escrito:Fiquei particularmente intrigado com o motivo pelo qual os caracteres russos são renderizados corretamente na janela do console, mas quando são canalizados para um arquivo, vejo os pontos de interrogação.

Responder1

Nada secreto: a codificação de um arquivo criado usando >redirecionamento segue a página de código ativa atual de cmd. O ?(um ponto de interrogação) é simplesmente um substituto (marcador de substituição) se um caractere não existir nessa página de código.

Solução: use UTF-8(página de código 65001)comochcp 65001

O exemplo a seguir ilustra (e talvez prove) muito bem:

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

Os arquivos dir1250.txte dir65001.txtabertos no Notepad++:

redirecionamento e codificação

Por favor, note queassim chamadoANSIé a página de código 1250 (Europa Central) na minha localidade, enquanto a sua pode ser, por exemplo, 1252 (EUA e Europa Ocidental)…

informação relacionada