¿Por qué produce el comando DIR de Windows? ¿Caracteres en lugar del alfabeto ruso?

¿Por qué produce el comando DIR de Windows? ¿Caracteres en lugar del alfabeto ruso?

En un cuadro de Windows 10, a través de la línea de comando, ejecuto este comando:
C:\Users\idiot\Music>dir /a:d /s /b >> tom-music-2016-julio.txt

El propósito es enumerar todos los directorios. Pero he notado que los directorios con letras no romanas en el nombre imprimirán ????? en lugar de los caracteres rusos o chinos. ¿Por qué?

Al principio pensé que el problema estaba en las fuentes del sistema. (No tengo instalado un paquete de idioma ruso). Pero puedo cambiar el nombre de los archivos a nombres rusos en Win Explorer. Es importante destacar que cuando ejecuto el comando DIR en la ventana (sin conectarlo a un archivo de salida),Puede ver claramente los caracteres rusos..

Eso implica para mí que el problema está en el comando que canaliza algo a un archivo o en el editor de texto de Windows que intenta leer el resultado.

Intenté abrir el archivo en 2 editores de texto separados e incluso en un navegador web, pero veo signos de interrogación de todos modos.

¿Alguien puede sugerir una causa de este problema y una posible solución?

¿Estoy en lo cierto al suponer que no necesitaré realizar ningún procesamiento en los archivos o directorios? Gracias.

Posdata:Particularmente me ha intrigado saber por qué los caracteres rusos se muestran bien en la ventana de la consola, pero cuando se canalizan a un archivo, veo los signos de interrogación.

Respuesta1

Nada secreto: la codificación de un archivo creado mediante >la redirección sigue la página de códigos activa actual de cmd. El ?(un signo de interrogación) es simplemente un sustituto (marcador de reemplazo) si un carácter no existe en dicha página de códigos.

Solución: utilizar UTF-8(página de códigos 65001)comochcp 65001

El siguiente ejemplo ilustra (y tal vez prueba) bastante bien:

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

Los archivos dir1250.txty dir65001.txtabiertos en Notepad++:

redirección y codificación

Tenga en cuenta queasí llamadoANSIes la página de códigos 1250 (Europa Central) en mi ubicación, mientras que la suya podría ser, por ejemplo, 1252 (EE. UU. y Europa Occidental)...

información relacionada