it-swarm-eu.dev

Bester Weg, um Textdateien zwischen Zeichensätzen zu konvertieren?

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.

Beste Lösungen bisher:

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.)

Bearbeiten

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".

486

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).

214
Troels Arvin

Versuchen Sie es mit VIM

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


Erklärungsteil!

  1. +: 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
  2. |: Trennzeichen mehrerer Befehle (wie ; in bash)
  3. set nobomb: keine utf-8-Stückliste
  4. set fenc=utf8: Neue Kodierung auf utf-8 doc Link setzen
  5. x: Datei speichern und schließen
  6. filename.txt: Pfad zur Datei
  7. ": qotes sind hier wegen Pipes. (sonst benutzt bash sie als bash pipe)
79
Boop

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.

35
Cheekysoft

iconv (1)

iconv -f FROM-ENCODING -t TO-ENCODING file.txt

Es gibt auch iconv-basierte Tools in vielen Sprachen.

19
Daniel Papasian
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
19
Jay Bazuzi

Testen Sie die iconv Bash-Funktion

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
14
Arne Evertsson

Versuchen Sie Notepad ++

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".

13
Jeremy Glover

Oneliner mit find, mit automatischer Erkennung

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 .

9

PHP iconv ()

iconv("UTF-8", "ISO-8859-15", $input);

3
user15096

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.

2
lalthomas

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.

1

Mein Lieblingswerkzeug dafür ist Jedit (ein Java-basierter Texteditor), der zwei sehr praktische Funktionen bietet:

  • Eine, mit der der Benutzer einen Text mit einer anderen Kodierung erneut laden kann (und somit das Ergebnis visuell kontrollieren kann)
  • Eine andere, die es dem Benutzer ermöglicht, die Kodierung (und das Zeilenendezeichen) vor dem Speichern explizit auszuwählen
0
yota

Verwenden Sie dieses Python-Skript: https://github.com/goerz/convert_encoding.py Funktioniert auf jeder Plattform. Benötigt Python 2.7.

0
kinORnirvana

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

0
Dorian

Ä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.

0