Konvertieren Sie ANSI-Textdateien in UTF8 über die Windows-Befehlszeile

Konvertieren Sie ANSI-Textdateien in UTF8 über die Windows-Befehlszeile

Ich möchte ANSI-kodierte Textdateien (Win 1252) ohne BOM in UTF8 konvertieren, idealerweise über einen Befehlszeilenaufruf. Mein Anwendungsfall: Ich exportiere .tex-Dateien aus Stata, die ich mit LuaLaTeX kompilieren möchte. Stata unterstützt offenbar kein UTF8, LuaLaTeX unterstützt nichts anderes und gerät daher an einigen Nicht-ASCII-Zeichen ins Stocken. Von Stata aus kann ich Shell-Befehle aufrufen, daher wäre es schön, wenn ich die Konvertierung direkt aus meinen Stata-Skripten heraus durchführen könnte.

Idealerweise würde ich also gerne einen Befehl wie z. B. aufrufen können convert2UTF.cmd file.tex. Eine weitere gute Option wäre eine Stapelkonvertierung von Dateien innerhalb eines Ordners (z. B. alle Dateien mit *stata.tex konvertieren). Außerdem wäre es toll, wenn die Lösung mit den Standard-Windows-Tools funktionieren würde (mindestens Win 7, noch besser XP).

Ähnliche Fragen wurden gestelltHierVor demCygwin/GnuWin32-Ansatzist problematisch, da ich gerne konvertieren möchte, ohne zusätzliche Software auf einem Rechner installieren zu müssen. DiePowershell-Ansatzsieht vielversprechend aus, out-file -en utf8speichert die Datei aber anscheinend mit BOM.

Ein anderer Powershell-Ansatzdas scheint zu UTF8 ohne BOM zu konvertieren ist

foreach($i in ls -recurse -filter "*.*") {
    if (
        $i.Extension.ToLower() -eq ".tex"
    ) {
        $MyFile = Get-Content $i.fullname 
        [System.IO.File]::WriteAllLines($i.fullname, $MyFile)
    }
}

Leider kann ich nicht herausfinden, wie ich es ausführen kann. Ich habe es als Powershell-Skript im selben Ordner wie die .tex-Dateien gespeichert, aber wenn ich es ausführe, berührt es diese nicht. Also fehlt anscheinend etwas. Ich muss wohl nicht erwähnen, dass meine Powershell-Kenntnisse so gut wie nichts sind. Außerdem möchte ich einen Dateinamen als Argument übergeben, wenn ich es von Stata aus aufrufe.

Antwort1

Ich denke, Sie können versuchen, ein VBS-Skript und -Objekt zu verwenden ADODB.Stream.

Google-Suche: „vbs konvertiert Datei ANSI in UTF-8“

verwandte Informationen