Wie wird die korrekte Unicode- und ANSI-Ausgabeumleitung in cmd.exe durchgeführt?

8

Wenn Sie Windows automatisieren und die Ausgabe von verschiedenen Befehlen (intern cmd.exe oder extern) umleiten, werden Sie feststellen, dass Ihre Protokolldateien kombinierte Unicode- und ANSI-Ausgaben enthalten (was bedeutet, dass sie ungültig sind und nicht funktionieren) laden Sie gut in Zuschauer / Redakteure).

Ist es möglich, cmd.exe mit UTF-8 zu arbeiten? Bei dieser Frage geht es nicht um Anzeige, s um stdin / stdout / stderr Umleitung und Unicode.

Ich suche nach einer Lösung, mit der Sie:

  • leitet die Ausgabe der internen Befehle mit UTF-8
  • an eine Datei um
  • leitet die Ausgabe externer Befehle um, die Unicode für die Dateien unterstützen, aber als UTF-8 codiert sind.

Wenn es nicht möglich ist, diese Konsistenz mit Batch-Dateien zu erhalten, gibt es eine andere Möglichkeit, dieses Problem zu lösen, wie zum Beispiel die Verwendung von Python-Skripten? In diesem Fall würde ich gerne wissen, ob es möglich ist, die Unicode-Erkennung alleine durchzuführen (Benutzer, die das Scripting verwenden, sollten sich nicht daran erinnern, ob die aufgerufenen Tools Unicode ausgeben oder nicht, sondern nur die Ausgabe in UTF-8 konvertieren.

Der Einfachheit halber nehmen wir an, dass, wenn die Werkzeugausgabe nicht Unicode ist, diese als UTF-8 (keine Codepageumwandlung) betrachtet wird.

    
sorin 24.04.2010, 20:56
quelle

2 Antworten

8

Sie können chcp verwenden, um die aktive Codepage zu ändern. Dies wird auch zum Umleiten von Text verwendet:

%Vor%

Beachten Sie jedoch, dass dies keine Auswirkungen hat, wenn cmd mit dem Schalter /u gestartet wurde, der die Unicode-Ausgabe (UTF-16 in diesem Fall) erzwingt. Wenn dieser Schalter aktiv ist, wird die gesamte Ausgabe in UTF-16LE sein, unabhängig von der Codepage, die mit chcp festgelegt wurde.

Beachten Sie außerdem, dass die Konsole für die interaktive Ausgabe unbrauchbar ist, wenn sie auf Rasterschriftarten eingestellt ist. Ich bekomme in diesem Fall lustige Fehlermeldungen:

%Vor%

Verwenden Sie also entweder ein vernünftiges Setup (TrueType-Schriftart für die Konsole) oder ziehen Sie diesen Stunt nicht, wenn Sie die Konsole interaktiv verwenden und einen Pfad haben, der Nicht-ASCII-Zeichen enthält.

    
Joey 25.04.2010 14:37
quelle
0
%Vor%

ohne

%Vor%

Hat mir geholfen. Damit hatte ich einen breiten Charakter in der Druckwarnung.

    
user2449801 04.06.2013 00:15
quelle