Windows 10 상자에서 명령줄을 통해 다음 명령을 실행합니다.
C:\Users\idiot\Music>dir /a:d /s /b >> tom-music-2016-july.txt
목적은 모든 디렉토리를 나열하는 것입니다. 그러나 이름에 로마자가 아닌 문자가 포함된 디렉토리는 ?????를 인쇄한다는 것을 알았습니다. 러시아어나 중국어 문자 대신. 왜?
처음에는 시스템 글꼴에 문제가 있는 줄 알았습니다. (저는 러시아어 언어 팩을 설치하지 않았습니다.) 하지만 Win Explorer에서는 파일 이름을 러시아어 파일 이름으로 바꿀 수 있습니다. 중요한 점은 출력 파일로 연결하지 않고 창에서 DIR 명령을 실행할 때러시아어 문자가 선명하게 보입니다.
이는 파일에 무언가를 파이프하는 명령이나 출력을 읽으려고 하는 Windows 텍스트 편집기에 문제가 있다는 것을 의미합니다.
2개의 별도 텍스트 편집기와 웹 브라우저에서 파일을 열려고 했지만 상관없이 물음표 문자가 표시됩니다.
누구든지 이 문제의 원인과 가능한 해결책을 제안할 수 있습니까?
파일이나 디렉토리 자체를 처리할 필요가 없다고 가정하는 것이 맞습니까? 감사해요.
추신:특히 러시아어 문자가 콘솔 창에서 제대로 렌더링되는 이유에 대해 의아해했는데, 파일로 연결하면 물음표가 표시됩니다.
답변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
Notepad++에서 열린 dir1250.txt
및 파일 :dir65001.txt
점에 유의하시기 바랍니다소위ANSI
내 로케일의 코드 페이지는 1250(중앙 유럽어)이지만 귀하의 로케일은 예를 들어 1252(미국 및 서부 유럽 연합)일 수 있습니다.