Auf der Seite werden regelmäßig Fragen zur Unicode-Eingabe/-Ausgabe und zur Weiterleitung gestellt JP Software-Supportforen. Dies kann aufgrund der Art und Weise, wie Windows erstellt wurde, ein kompliziertes Problem sein – hauptsächlich werden externe ASCII-Dateien verwendet, für die meisten Windows-APIs jedoch UTF16. Dies bedeutet, dass jedes Mal, wenn der Befehlsprozessor (TCC oder CMD) eine ASCII-Datei liest, muss sie diese in UTF-16 konvertieren, bevor sie eine API aufrufen oder auf dem Bildschirm anzeigen kann. Und wenn Sie die Ausgabe in eine Datei umleiten (d. h. „dir > file.dat“), muss der Befehlsprozessor sie von UTF16 zurück in ASCII konvertieren. Leider ist diese ASCII -> UTF16 -> ASCII-Konvertierung nicht 100 % zuverlässig. Abhängig von Ihrer Codepage und Schriftart stimmt der in Windows eingehende ASCII-Code nicht immer mit dem zurückkommenden ASCII-Code überein.
Eine Lösung besteht darin, Unicode anstelle von ASCII zu verwenden. TCC kann ASCII- oder Unicode-Dateien (entweder UTF16 oder UTF8) transparent verarbeiten, wo immer nach Dateieingaben gesucht wird. Wenn Sie die Direktive „Unicode-Ausgabe“ festlegen TCC (OPTION / Start), TCC verwendet UTF16 für die Ausgabeumleitung oder Weiterleitung und sucht in seiner Pipe-Eingabe nach UTF16. Dieser Ansatz funktioniert gut, wenn Sie verwenden TCC interne Befehle oder externe Apps, die UTF16-Dateien erkennen.
Alternativ auch die aktuelle Version von TCC ermöglicht Ihnen auch die Verwendung von UTF8 (weit verbreitet in allen Bereichen). ausgeschlossen Windows) zur Ein- und Ausgabe. Dazu müssen Sie die Direktive „Unicode-Ausgabe“ deaktivieren und drei Dinge festlegen:
- Ändern Sie Ihre Codepage in 65001 (geben Sie „chcp 65001“ an der Eingabeaufforderung ein).
- Fügen Sie die Direktive „UTF8Output=Yes“ zu Ihrer TCMD.INI-Datei im Abschnitt [4NT] hinzu.
- Gehen Sie zu OPTION / Start und wählen Sie die Option „UTF8“.
TCC behandelt dann alle Eingabedateien als UTF8 und schreibt die gesamte Ausgabe als UTF8.
Viele Windows-Apps (einschließlich CMD) können jedoch weder UTF16- noch UTF8-Dateien verarbeiten. Wie können wir also unsere Formate mischen – manchmal ASCII lesen und schreiben und manchmal Unicode? TCC hat Optionen, dies zu tun:
- >:a – Umgeleitete Ausgabe (STDOUT und/oder STDERR) ist ASCII (8-Bit-Zeichen)
- >:u – Die umgeleitete Ausgabe ist UTF16 Unicode
- >:8 oder >:u8 – Die umgeleitete Ausgabe ist UTF8
- >>:a – Die angehängte umgeleitete Ausgabe ist ASCII
- >>:u – Die angehängte umgeleitete Ausgabe ist UTF16 Unicode
- >>:8 oder >>:u8 – Die angehängte umgeleitete Ausgabe ist UTF16
Und das Gleiche können Sie auch mit Rohren machen:
- |:a – Die Pipe-Ausgabe ist ASCII
- |:u – Die weitergeleitete Ausgabe ist UTF16
- |:8 oder |:u8 – Die weitergeleitete Ausgabe ist UTF8
Durch die Kombination dieser Optionen können wir konfigurieren TCC um unseren Anforderungen gerecht zu werden – entweder hauptsächlich Unicode mit Ausnahmen für Apps, die damit nicht umgehen können, oder hauptsächlich ASCII mit Ausnahmen für Apps, die UTF8 oder UTF16 akzeptieren (oder erfordern). Schauen Sie sich auch die an TCC interner Befehl TPIPE, das sowohl UTF8 als auch UTF16 unterstützt und über eine Vielzahl von Konvertierungsoptionen verfügt.