So konvertieren Sie eine in utf-8 gespeicherte Stapeldatei in eine Datei, die über eine andere Stapeldatei funktioniert, und führen Sie sie aus
Ich habe ein Programm, mit dem ich eine Batch-Datei erstelle. Mein Problem ist, dass das Programm UTF-8 ausgibt. Sobald sich also diakritische Zeichen wie é, à, ö, Ä in meiner Batch-Datei befinden, schlägt dies fehl. Es scheint, dass ich in dem Programm, das die Batch-Datei erstellt, keine Möglichkeit finde, meine Ausgabe in etwas anderes als UTF-8 zu konvertieren.
Also überlegte ich, zwei Bach-Dateien zu erstellen. Das aktuelle und ein anderes, das das aktuelle von UTF-8 nach ANSI konvertiert (Windows Codepage 1252 oder vielleicht cp 850) und es anschließend ausführt. Natürlich würde ich als ersten Befehl der eigentlichen Batch-Datei ein chcp xxxx hinzufügen.
Meine Frage ist also, ob es eine Alternative zu iconv unter Windows gibt - oder wie man eine UTF-8-Textdatei mithilfe einer zweiten Batchdatei in eine Windows-Codepage konvertiert. Gibt es in Win XP und höher etwas, das ich verwenden könnte, oder gibt es ein kostenloses und weiterverteilbares Tool, das ich dafür verwenden könnte?
Hinweis:
chcp 65001
funktioniert nicht für Batch-Dateien.
EDIT 1:
Unter Windows XP habe ich zwei Batch-Dateien erstellt, um die erste Antwort zu testen.
1.bat nach UTF-8 ohne Stückliste enthält:
chcp 1252
cd üöä
2.bat auch ohne Stückliste nach UTF-8 codiert - aber ohne Sonderzeichen enthält:
chcp 1252
type "1.bat" >"ansi_file.bat"
Die resultierende ansi_file.bat, die erstellt wird, wenn 2.bat ausgeführt wird, wird immer noch utf-8-codiert und nicht ansi-codiert.
EDIT 2:
Der erwähnte umgekehrte Vorgang funktioniert.
chcp 1252
echo ü > ansi.txt
cmd /u /c type ansi.txt > unicode.txt
aber keine der folgenden Zeilen
cmd /a /c type unicode.txt > back2ansi.txt
type unicode.txt > back2ansi_v2.txt
bringt mich zurück zu ANSI. Ich habe dies sowohl unter Windows XP als auch unter Windows 7 versucht. Kann mir jemand helfen?
HINWEIS:
Mir ist bekannt, wie der Windows Script Host und VBS verwendet werden. Ich würde es jedoch gerne vermeiden, vom Skript-Host abhängig zu sein. Die VBS-Methode wird hier detailliert beschrieben:http://msdn.microsoft.com/en-us/library/windows/desktop/aa368046%28v=vs.85%29.aspx
EDIT 3:
Die Textdatei, die mit dem obigen Unicode ü erstellt wurde, ist nicht utf-8
Die Windows-Unicode-Datei ist HEX:
FC 00 20 00 0D 00 0A 00
UTF-8 ohne Stückliste wäre HEX:
C3 BC 20 0D 0A
Die mit verknüpfte VBS-Lösung funktioniert nur mit dem Unicode-Formular, schlägt jedoch im UTF-8-Formular fehl. Ich muss UTF-8 in eine andere Codepage konvertieren, damit nicht einmal eine für mich funktioniert ...