Was ist das schnellste, einfachste Werkzeug 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, Befehlszeilenprogramme oder andere Dienstprogramme für Betriebssysteme, Websites usw.
Unter Linux/UNIX/OS X/cygwin:
Gnu iconv vorgeschlagen von Troels Arvin wird am besten als Filter verwendet. Es scheint allgemein verfügbar zu sein. Beispiel:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
Wie von Ben ausgeführt, gibt es einen Online-Konverter, der iconv verwendet.
Gnu recode ( manual ) wird von Cheekysoft vorgeschlagen konvertiert eine oder mehrere Dateien in-place. Beispiel:
$ recode UTF8..ISO-8859-15 in.txt
Dieser verwendet kürzere Aliase:
$ recode utf8..l9 in.txt
Recode unterstützt auch surface, mit dem verschiedene Zeilenendtypen und -codierungen konvertiert werden können:
Konvertieren von Zeilenumbrüchen von LF (Unix) in CR-LF (DOS):
$ recode ../CR-LF in.txt
Base64-Kodierungsdatei:
$ 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
(Allerdings keine Unterstützung für ISO-8859-15; unterstützte Zeichensätze sind Unicode, Utf7, Utf8, Utf32, ASCII, Bigendianunicode, Standard und OEM.)
Meinen Sie iso-8859-1-Unterstützung? Die Verwendung von "String" bewirkt dies, z. für umgekehrt
gc -en string in.txt | Out-File -en utf8 out.txt
Anmerkung: Die möglichen Aufzählungswerte sind "Unknown, String, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".
Stand-alone-Dienstprogramm Ansatz
iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING the encoding of the input
-t ENCODING the encoding of the output
Sie müssen keines dieser Argumente angeben. Sie verwenden standardmäßig Ihr aktuelles Gebietsschema (normalerweise UTF-8).
Wenn Sie vim
haben, können Sie Folgendes verwenden:
Nicht für jede Kodierung getestet.
Das Coole daran ist, dass Sie die Quellcodierung nicht kennen müssen
vim +"set nobomb | set fenc=utf8 | x" filename.txt
Beachten Sie, dass dieser Befehl die Datei direkt ändert
+
: Wird von vim verwendet, um den Befehl beim Öffnen einer Datei direkt einzugeben. Üblicherweise wird eine Datei in einer bestimmten Zeile geöffnet: vim +14 file.txt
|
: Trennzeichen mehrerer Befehle (wie ;
in bash)set nobomb
: keine utf-8-Stücklisteset fenc=utf8
: Neue Kodierung auf utf-8 doc Link setzenx
: Datei speichern und schließenfilename.txt
: Pfad zur Datei"
: qotes sind hier wegen Pipes. (sonst benutzt bash sie als bash pipe)Unter Linux können Sie mit dem sehr leistungsfähigen Befehl recode versuchen, zwischen den verschiedenen Zeichensätzen sowie beliebigen Zeilenende-Problemen zu konvertieren. recode -l zeigt Ihnen alle Formate und Kodierungen an, zwischen denen das Tool konvertieren kann. Es ist wahrscheinlich eine sehr lange Liste.
iconv -f FROM-ENCODING -t TO-ENCODING file.txt
Es gibt auch iconv-basierte Tools in vielen Sprachen.
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT
Die kürzeste Version, wenn Sie davon ausgehen können, dass die Eingangsstückliste korrekt ist:
gc FILE.TXT | Out-File -en utf7 file-utf7.txt
Ich habe dies in .bashrc
gestellt:
utf8()
{
iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
rm $1
mv $1.tmp $1
}
..um Dateien so konvertieren zu können:
utf8 MyClass.Java
Unter Windows konnte ich Notepad ++ zur Konvertierung von ISO-8859-1 nach UTF-8 verwenden. Klicken Sie auf "Encoding"
und dann auf "Convert to UTF-8"
.
Die Zeichenkodierung aller übereinstimmenden Textdateien wird automatisch erkannt und alle übereinstimmenden Textdateien werden in utf-8
-Kodierung konvertiert:
$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;
Um diese Schritte auszuführen, wird eine Sub-Shell sh
mit -exec
verwendet, ein Einzeiler mit dem Flag -c
ausgeführt und der Dateiname als Positionsargument "$1"
mit -- {}
übergeben. Dazwischen wird die Ausgabedatei utf-8
vorübergehend als converted
bezeichnet.
Wobei file -bi
bedeutet:
-b, --brief
Dateinamen nicht vor Ausgabezeilen setzen (kurzer Modus).
-i, - mime
Bewirkt, dass der Dateibefehl Mime-Typ-Zeichenfolgen anstelle der herkömmlich vom Menschen lesbaren Zeichenfolgen ausgibt. So kann es sagen: "Text/Plain; charset = us-ascii ’statt„ ASCII-Text “.
Der Befehl find
ist für diese Automatisierung der Dateiverwaltung sehr nützlich.
Klicken Sie hier für more find
galore .
PHP iconv ()
iconv("UTF-8", "ISO-8859-15", $input);
DOS/Windows: Verwenden Sie Codepage
chcp 65001>NUL
type ascii.txt > unicode.txt
Mit dem Befehl chcp
kann die Codepage geändert werden. Die Codepage 65001 ist der Microsoft-Name für UTF-8. Nach dem Festlegen der Codepage wird die von den folgenden Befehlen generierte Ausgabe als Codepage festgelegt.
um Eigenschaftsdateien (Java) zu schreiben, verwende ich normalerweise in Linux (Minz- und Ubuntu-Distributionen):
$ native2ascii filename.properties
Zum Beispiel:
$ cat test.properties
first=Execução número um
second=Execução número dois
$ native2ascii test.properties
first=Execu\u00e7\u00e3o n\u00famero um
second=Execu\u00e7\u00e3o n\u00famero dois
PS: Ich habe in Portugal eine oder zwei Hinrichtungen geschrieben, um Sonderzeichen zu erzwingen.
In meinem Fall erhielt ich bei der ersten Ausführung folgende Nachricht:
$ native2ascii teste.txt
The program 'native2ascii' can be found in the following packages:
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
Try: Sudo apt install <selected package>
Als ich die erste Option (gcj-5-jdk) installierte, war das Problem beendet.
Ich hoffe das hilft jemandem.
Mein Lieblingswerkzeug dafür ist Jedit (ein Java-basierter Texteditor), der zwei sehr praktische Funktionen bietet:
Verwenden Sie dieses Python-Skript: https://github.com/goerz/convert_encoding.py Funktioniert auf jeder Plattform. Benötigt Python 2.7.
Mit Ruby:
Ruby -e "File.write('output.txt', File.read('input.txt').encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: ''))"
Quelle: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences
Ändern Sie einfach die Kodierung der geladenen Datei in der IntelliJ IDEA IDE rechts neben der Statusleiste (unten), wo der aktuelle Zeichensatz angezeigt wird. Sie werden aufgefordert, Reload oder Convert zu verwenden. Verwenden Sie Convert. Stellen Sie sicher, dass Sie die Originaldatei im Voraus gesichert haben.