Cygwin oder GnuWin32 bieten Unix-Tools wie iconv
und dos2unix
(und unix2dos
). Unter Unix/Linux/Cygwin sollten Sie anstelle von ANSI "windows-1252" als Kodierung verwenden (siehe unten). (Sofern Sie nicht wissen, dass Ihr System eine andere Codepage als 1252 als Standard-Codepage verwendet, müssen Sie in diesem Fall iconv mitteilen die richtige Codepage zum Übersetzen.)
Konvertieren Sie von einem (-f
) zum anderen (-t
) mit:
$ iconv -f windows-1252 -t utf-8 infile > outfile
Oder in einer Find-and-Conquer-Form:
## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \;
Alternativ:
## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;
Diese Frage wurde auf dieser Seite oft gestellt, daher hier einige zusätzliche Informationen zu "ANSI". In einer Antwort auf eine verwandte Frage erwähnt CesarB:
Es gibt mehrere Kodierungen, die in Windows "ANSI" genannt werden. Tatsächlich ist ANSI eine falsche Bezeichnung. iconv hat keine Möglichkeit zu erraten, was Sie wollen.
Die ANSI-Codierung ist die Codierung, die von den „A“-Funktionen in der Windows-API verwendet wird (die „W“-Funktionen verwenden UTF-16). Welcher Codierung es entspricht, hängt normalerweise von Ihrer Windows-Systemsprache ab. Am gebräuchlichsten ist CP 1252 (auch bekannt als Windows-1252). Wenn Ihr Editor also ANSI sagt, bedeutet dies "was auch immer die API-Funktionen als Standard-ANSI-Codierung verwenden", was die Standard-Nicht-Unicode-Codierung ist, die in Ihrem System verwendet wird (und daher normalerweise diejenige, die für Textdateien verwendet wird).
Die Seite, auf die er verlinkt, enthält diesen historischen Leckerbissen (zitiert aus einem Microsoft-PDF) über die Ursprünge von CP 1252 und ISO-8859-1, einer anderen häufig verwendeten Codierung:
[...] rührt daher, dass die Windows-Codepage 1252 ursprünglich auf einem ANSI-Entwurf basierte, der zum ISO-Standard 8859-1 wurde. Beim Hinzufügen von Codepunkten zu dem für Steuercodes im ISO-Standard reservierten Bereich wichen die Windows-Codepage 1252 und nachfolgende Windows-Codepages, die ursprünglich auf der ISO 8859-x-Serie basierten, jedoch von ISO ab. Bis zum heutigen Tag ist es nicht ungewöhnlich, dass die Entwicklergemeinschaft sowohl innerhalb als auch außerhalb von Microsoft die 8859-1-Codepage mit Windows 1252 verwechselt und „ANSI“ oder „A“ verwendet, um die Windows-Codepage-Unterstützung anzuzeigen .
Mit PowerShell können Sie so etwas tun:
Get-Content IN.txt | Out-File -encoding ENC -filepath OUT.txt
Während ENC ist so etwas wie unicode , ASCII , utf8 und utf32 . Sehen Sie sich die Hilfedatei an.
Um alle *.txt-Dateien in einem Verzeichnis in UTF-8 zu konvertieren, gehen Sie so vor:
foreach($i in ls -name DIR/*.txt) { \
Get-Content DIR/$i | \
Out-File -encoding utf8 -filepath DIR2/$i \
}
wodurch eine konvertierte Version jeder .txt-Datei in DIR2 erstellt wird.
Um die Dateien in allen Unterverzeichnissen zu ersetzen, verwenden Sie:
foreach($i in ls -recurse -filter "*.java") {
$temp = Get-Content $i.fullname
Out-File -filepath $i.fullname -inputobject $temp -encoding utf8 -force
}
Die Wikipedia-Seite zu Zeilenumbrüchen hat einen Abschnitt über Konvertierungsprogramme.
Dies scheint die beste Wahl für eine Konvertierung zu sein, bei der nur die Tools verwendet werden, mit denen Windows geliefert wird:
TYPE unix_file | FIND "" /V > dos_file