Auf einer Windows 10-Box führe ich über die Befehlszeile diesen Befehl aus:
C:\Benutzer\idiot\Musik>dir /a:d /s /b >> tom-music-2016-july.txt
Der Zweck besteht darin, alle Verzeichnisse aufzulisten. Mir fällt jedoch auf, dass Verzeichnisse mit nicht-römischen Buchstaben im Namen ????? anstelle der russischen oder chinesischen Zeichen drucken. Warum?
Anfangs dachte ich, das Problem liege bei den Systemschriftarten. (Ich habe kein russisches Sprachpaket installiert). Aber ich kann Dateien im Windows Explorer in russische Dateinamen umbenennen. Wichtig ist, dass ich, wenn ich den DIR-Befehl im Fenster ausführe (ohne ihn an eine Ausgabedatei weiterzuleiten),kann deutlich russische Schriftzeichen sehen.
Das bedeutet für mich, dass das Problem entweder beim Befehl liegt, der etwas in eine Datei weiterleitet, oder beim Windows-Texteditor, der versucht, die Ausgabe zu lesen.
Ich habe versucht, die Datei in zwei verschiedenen Texteditoren und sogar in einem Webbrowser zu öffnen, aber ich sehe trotzdem Fragezeichen.
Kann jemand eine Ursache für dieses Problem und eine mögliche Lösung vorschlagen?
Gehe ich recht in der Annahme, dass ich an den Dateien oder Verzeichnissen selbst keine Verarbeitung vornehmen muss? Danke.
Nachtrag:Besonders wundere ich mich darüber, warum die russischen Zeichen im Konsolenfenster einwandfrei dargestellt werden, beim Weiterleiten in eine Datei aber Fragezeichen angezeigt werden.
Antwort1
Nichts Geheimnisvolles: Die Kodierung einer mit >
Umleitung erstellten Datei folgt der aktuell aktiven Codepage von cmd
. Das ?
(ein Fragezeichen) ist lediglich ein Ersatz (Ersetzungsmarker), wenn ein Zeichen in einer solchen Codepage nicht vorhanden ist.
Lösung: Verwenden Sie UTF-8
(Codepage 65001)alschcp 65001
Das folgende Beispiel veranschaulicht (und beweist vielleicht) es ganz gut:
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
Die in Notepad++ geöffneten dir1250.txt
und Dateien:dir65001.txt
Bitte beachte, dasssogenanntANSI
ist in meiner Region die Codepage 1250 (Mitteleuropäisch), während Ihre z. B. 1252 (USA und Westeuropa) sein könnte …