Was ist das schnellste und einfachste Tool oder die schnellste Methode zum Konvertieren von Textdateien zwischen Zeichensätzen?
Insbesondere muss ich von UTF-8 nach ISO-8859-15 konvertieren und umgekehrt.
Alles ist möglich: Einzeiler in Ihrer bevorzugten Skriptsprache, Befehlszeilentools oder andere Dienstprogramme für Betriebssysteme, Websites usw.
Beste Lösungen bisher:
Unter Linux / UNIX / OS X / cygwin:
Das von Troels Arvin vorgeschlagene Gnu- Symbol wird am besten als Filter verwendet . Es scheint universell verfügbar zu sein. Beispiel:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
Wie Ben betont hat , gibt es einen Online-Konverter, der iconv verwendet .
Die von Cheekysoft vorgeschlagene Gnu- Neukodierung ( manuell ) konvertiert eine oder mehrere Dateien direkt . Beispiel:
$ recode UTF8..ISO-8859-15 in.txt
Dieser verwendet kürzere Aliase:
$ recode utf8..l9 in.txt
Recode unterstützt auch Oberflächen, mit denen zwischen verschiedenen Zeilenendtypen und Codierungen konvertiert werden kann:
Konvertieren Sie Zeilenumbrüche von LF (Unix) in CR-LF (DOS):
$ recode ../CR-LF in.txt
Base64-Codierungsdatei:
$ recode ../Base64 in.txt
Sie können sie auch kombinieren.
Konvertieren Sie eine Base64-codierte UTF8-Datei mit Unix-Zeilenenden in eine Base64-codierte Latin 1-Datei mit Dos-Zeilenenden:
$ recode utf8/Base64..l1/CR-LF/Base64 file.txt
Unter Windows mit Powershell ( Jay Bazuzi ):
PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt
(Keine ISO-8859-15-Unterstützung. Unterstützte Zeichensätze sind Unicode, utf7, utf8, utf32, ascii, bigendianunicode, default und oem.)
Bearbeiten
Meinen Sie die Unterstützung von ISO-8859-1? Die Verwendung von "String" bewirkt dies zB umgekehrt
gc -en string in.txt | Out-File -en utf8 out.txt
Hinweis: Die möglichen Aufzählungswerte sind "Unbekannt, Zeichenfolge, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".
- CsCvt - Kalyttas Zeichensatzkonverter ist ein weiteres großartiges befehlszeilenbasiertes Konvertierungstool für Windows.
quelle
gc -en Ascii readme.html | Out-File -en UTF8 readme.html
aber es konvertiert die Datei in utf-8, aber dann ist es leer! Notepad ++ sagt, dass die Datei im Ansi-Format ist, aber nach meinem Verständnis ist das nicht einmal ein gültiger Zeichensatz? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExFrecode
das auch als Filter fungiert, wenn Sie keine Dateinamen übergeben, z. B.:recode utf8..l9 < in.txt > out.txt
enca
, müssen Sie die Eingabecodierung nicht angeben. Es reicht oft aus, nur die Sprache anzugeben :enca -L ru -x utf8 FILE.TXT
.iconv -f UTF-32 -t UTF-8 input.csv > output.csv
nur etwa siebenhunderttausend Zeilen gespeichert, nur ein Drittel. Mit der In-Place-Version wurdeniconv -f UTF-32 -t UTF-8 file.csv
alle mehr als 2 Millionen Zeilen erfolgreich konvertiert.Antworten:
Eigenständiger Utility- Ansatz
Sie müssen keines dieser Argumente angeben. Sie verwenden standardmäßig Ihr aktuelles Gebietsschema, normalerweise UTF-8.
quelle
iconv -l | grep UTF
Hier erfahren Sie, welche UTF-bezogenen Codierungen Ihre Kopie von iconv unterstützt.chardet in.txt
diese Option , um eine bestmögliche Vermutung zu erstellen. Das Ergebnis kann als ENCODING in verwendet werdeniconv -f ENCODING
.illegal input sequence at position
Nachrichten) und ersetzen Sie "seltsame" Zeichen durch "ähnliche" Zeichen :iconv -c -f UTF-8 -t ISO-8859-1//TRANSLIT in.txt > out.txt
.ex
) unten . Zusätzliche Informationen: (1) Sie müssen (wahrscheinlich) die-f
Option (von) nicht mit angebeniconv
. (2) Derfile --mime-encoding <file/s>
Befehl kann Ihnen helfen, die Codierung überhaupt herauszufinden.file
Befehl meldete meine Quelle als UTF-16 Little Endian; Laufeniconv -f UTF-16 -t UTF-8...
es falsch in ASCII transformiert, musste ich explizit angeben,iconv -f UTF-16LE...
um UTF-8Versuchen Sie es mit VIM
Wenn Sie haben
vim
, können Sie dies verwenden:Nicht für jede Codierung getestet.
Das Coole daran ist, dass Sie die Quellcodierung nicht kennen müssen
Beachten Sie, dass dieser Befehl die Datei direkt ändert
Erklärungsteil!
+
: Wird von vim verwendet, um beim Öffnen einer Datei den Befehl direkt einzugeben. Wird normalerweise zum Öffnen einer Datei in einer bestimmten Zeile verwendet:vim +14 file.txt
|
: Trennzeichen für mehrere Befehle (wie;
in Bash)set nobomb
: keine utf-8 Stücklisteset fenc=utf8
: Setzen Sie die neue Codierung auf utf-8 doc linkx
: Datei speichern und schließenfilename.txt
: Pfad zur Datei"
: qotes sind hier wegen rohren. (Andernfalls werden sie von bash als Bash-Pipe verwendet.)quelle
vim -b
oderhead file.txt|cat -e
find -regextype posix-extended -type f -regex ".*\.(h|cpp|rc|fx|cs|props|xaml)" -exec vim +'set nobomb | set fenc=utf8 | x' {} \;
Unter Linux können Sie mit dem sehr leistungsstarken Befehl recode versuchen, zwischen den verschiedenen Zeichensätzen und allen Problemen mit dem Zeilenende zu konvertieren. recode -l zeigt Ihnen alle Formate und Codierungen an, zwischen denen das Tool konvertieren kann. Es ist wahrscheinlich eine sehr lange Liste.
quelle
LF
? Es gibt/CR
und/CR-LF
aber nein/LF
iconv (1)
Es gibt auch iconv-basierte Tools in vielen Sprachen.
quelle
Die kürzeste Version, wenn Sie davon ausgehen können, dass die Eingabestückliste korrekt ist:
quelle
gc .\file-utf8.txt | sc -en utf7 .\file-utf7.txt
Set-Content
besser alsOut-File
?file-utf8.txt
Datei für die Eingabe verwendeten, da beide dieselbe Ausgabedatei hatten wiefile-utf7.txt
.gc -en Ascii readme.html | Out-File -en UTF8 readme.html
aber es konvertiert die Datei in utf-8, aber dann ist es leer! Notepad ++ sagt, dass die Datei im Ansi-Format ist, aber nach meinem Verständnis ist das nicht einmal ein gültiger Zeichensatz? uk.answers.yahoo.com/question/index?qid=20100927014115AAiRExFProbieren Sie die iconv Bash-Funktion aus
Ich habe dies in
.bashrc
:.. um Dateien wie folgt konvertieren zu können:
quelle

am Anfang der Datei vorangestellt .Versuchen Sie Notepad ++
Unter Windows konnte ich Notepad ++ verwenden, um die Konvertierung von ISO-8859-1 nach UTF-8 durchzuführen . Klicken Sie auf
"Encoding"
und dann"Convert to UTF-8"
.quelle
Oneliner mit find mit automatischer Zeichensatzerkennung
Die Zeichenkodierung aller übereinstimmenden Textdateien wird automatisch erkannt und alle übereinstimmenden Textdateien werden in die
utf-8
Codierung konvertiert :Um diese Schritte auszuführen, wird eine Unter-Shell
sh
verwendet-exec
, die einen Einzeiler mit dem-c
Flag ausführt und den Dateinamen als Positionsargument"$1"
mit übergibt-- {}
. Dazwischen wird dieutf-8
Ausgabedatei vorübergehend benanntconverted
.Wobei
file -bi
bedeutet:-b
,--brief
Stellen Sie den Dateinamen keine Dateinamen voran (Kurzmodus).-i
,--mime
Bewirkt, dass der Befehl file anstelle von herkömmlichen Zeichenfolgen vom Typ MIME Zeichenfolgen vom Typ MIME ausgibt. So kann es zum Beispieltext/plain; charset=us-ascii
eher sagen alsASCII text
. Dersed
Befehl schneidet dies nur so ab,us-ascii
wie es von erforderlich isticonv
.Der
find
Befehl ist für eine solche Dateiverwaltungsautomatisierung sehr nützlich. Klicken Sie hier für mehr infind
Hülle und Fülle .quelle
find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -b --mime-encoding "$1" | awk "{print toupper(\$0)}") -t UTF-8 > converted "$1" && mv converted "$1"' -- {} \;
sed
Befehl ist absichtlich vorhanden und ermöglicht die automatische Erkennung der Zeichenkodierung. Ich habe die Antwort erweitert, um dies jetzt zu erklären. In Bezug auf die Leserschaft wäre es höflich, alle verbleibenden irrelevanten Kommentare zu löschen. Vielen Dank.PHP iconv ()
iconv("UTF-8", "ISO-8859-15", $input);
quelle
DOS / Windows: Codepage verwenden
Mit dem Befehl
chcp
kann die Codepage geändert werden. Die Codepage 65001 ist der Microsoft-Name für UTF-8. Nach dem Einstellen der Codepage wird für die Ausgabe, die durch die folgenden Befehle generiert wird, die Codepage festgelegt.quelle
Um normalerweise eine Eigenschaftendatei (Java) zu schreiben, verwende ich diese unter Linux (Mint- und Ubuntu-Distributionen):
Zum Beispiel:
PS: Ich habe die Hinrichtung Nummer eins / zwei in Portugal geschrieben, um Sonderzeichen zu erzwingen.
In meinem Fall habe ich bei der ersten Ausführung folgende Nachricht erhalten:
Als ich die erste Option (gcj-5-jdk) installiert habe, war das Problem behoben.
Ich hoffe das hilft jemandem.
quelle
Mit Rubin:
Quelle: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences
quelle
Verwenden Sie dieses Python-Skript: https://github.com/goerz/convert_encoding.py Funktioniert auf jeder Plattform. Benötigt Python 2.7.
quelle
Mein Lieblingswerkzeug dafür ist Jedit (ein Java-basierter Texteditor), der zwei sehr praktische Funktionen hat:
quelle
Ändern Sie einfach die Codierung der geladenen Datei in der IntelliJ IDEA IDE rechts in der Statusleiste (unten), wo der aktuelle Zeichensatz angezeigt wird. Es wird aufgefordert, neu zu laden oder zu konvertieren und Konvertieren zu verwenden. Stellen Sie sicher, dass Sie die Originaldatei im Voraus gesichert haben.
quelle
Wenn MacOS-GUI-Anwendungen Ihr Brot und Butter sind, ist SubEthaEdit der Texteditor, den ich normalerweise zum Codieren-Wrangling verwende. Mit der "Konvertierungsvorschau" können Sie alle ungültigen Zeichen in der Ausgabecodierung anzeigen und korrigieren / entfernen.
Und es ist jetzt Open Source , also yay für sie 😉.
quelle
Wie beschrieben unter Wie korrigiere ich die Zeichenkodierung einer Datei? Synalyse It! Mit dieser Option können Sie unter OS X problemlos zwischen allen von der ICU-Bibliothek unterstützten Codierungen konvertieren .
Zusätzlich können Sie einige Bytes einer Datei anzeigen, die aus allen Codierungen in Unicode übersetzt wurde, um schnell zu sehen, welche für Ihre Datei die richtige ist.
quelle