Debian, Wie konvertiere ich ein Dateisystem von ISO-8859-1 in UTF-8?


7

Ich habe einen alten PC, auf dem Debian Stable ausgeführt wird und der ein Upgrade benötigt. Das Problem ist, dass latin1 (ISO-8859-1) für alles verwendet wird, und da der Rest der Welt auf UTF-8 umgestiegen ist, plane ich, diesen Computer ebenfalls zu konvertieren.

Und für diese Frage werde ich mich auf die Dateien konzentrieren, die mit Samba bereitgestellt werden, und einige haben einige latin1-Zeichen in den Dateinamen (wie åäö).

Jetzt ist mein Plan, alle Daten dieses alten Computers auf einen brandneuen Computer zu verschieben, auf dem Debian Stable ausgeführt wird (jedoch mit UTF-8).

Hat jemand eine gute Idee?


Hinweis : Später iconvmöchte ich den Inhalt einiger Dateien folgendermaßen konvertieren:

iconv --from-code=ISO-8859-1 --to-code=UTF-8 iso.txt > utf.txt

Ich kenne jedoch keinen guten Weg, um das Dateisystem selbst zu konvertieren.

Hinweis : Normalerweise gehe ich normalerweise nur scpvon einem Computer zum nächsten, aber dann habe ich latin1-Zeichen im utf-8-Dateisystem.


Update : Habe eine kleine Testrunde mit einer Hand voller Dateien (mit lustigen Zeichen) in den Dateinamen gemacht, und das schien zu funktionieren.

convmv -r -f ISO-8859-1 -t UTF-8  *

Anmerkung : -r= rekursiv; -f/ -t= von / bis.

Es war also nur mit dem auszuführen --notest

convmv -r -f ISO-8859-1 -t UTF-8 --notest *

Nichts mehr dazu.

Antworten:


14

Verwenden Sie convmv:

Package: convmv
Priority: optional
Section: utils
Installed-Size: 88
Maintainer: Raphael Zimmerer <killekulla@rdrz.de>
Architecture: all
Version: 1.12-1
Depends: perl
Filename: pool/main/c/convmv/convmv_1.12-1_all.deb
Size: 20052
MD5sum: dcc45d5b8517026f588d769d81d67768
SHA1: 55da9650cfee5c64d8a4fdf278aaf9401a5e5dec
SHA256: 0a8b0165a78dc42f7dc665a14d21c22ce0433d115fe537be2af74682d3b82a5f
Description: filename encoding conversion tool
 convmv can convert a single filename, a directory tree or all files
 on a filesystem to a different encoding. It only converts the
 encoding of filenames, not files contents. A special feature of
 convmv is that it also takes care of symlinks: the encoding of the
 symlink's target will be converted if the symlink itself is being
 converted.
 .
 It is also possible to convert directories to UTF-8 which are already
 partially UTF-8 encoded.
 .
 Keywords: rename, move
Tag: devel::i18n, implemented-in::perl, interface::commandline, role::program, scope::utility, works-with::file

apt-get install convmv

:-)


5

Hinweis für Leser, die auf diese Seite stoßen, bevor sie die Dateien übertragen haben:

Sie können die Übertragung mit einem aktuellen rsync und der Option --iconv durchführen:

rsync -va --iconv=utf8,iso88591 /source/latin1/ /destination/utf8

(Ja, die Reihenfolge der iconv-Zeichensätze ist nicht intuitiv!)

Denn wenn die Übertragung bereits erfolgt ist, ist convmv tatsächlich die Lösung.


0

Es gibt einen Unicode- Zeichencodierungskonverter, der die Zeichencodierungskonvertierung zwischen Unicode (UTF-8 / UTF-16 / UTF-7 / UTF-32) und Nicht-Unicode (Ansi, chinesisches vereinfachtes GBK, chinesisches traditionelles BIG5, japanisches SHIFT-JIS) unterstützt. Japanische EUC-JP, koreanische euc-kr-Zeichensatzkodierung usw.).


1
Wie installiert man das unter Debian (oder einem anderen Linux)? Es sieht aus wie ein Windows-Tool ...
Johan

0

Führen Sie dies im aktuellen Verzeichnis aus:

 for f in `ls`; do
 iconv --from-code=iso-8859-1 --to-code=utf-8 $f -o $f;
 done

0

Ich würde zuerst testen, ob die Datei nicht in der Zielcodierung enthalten ist, andernfalls können Sie Ihre Dateien durcheinander bringen, denke ich. (das folgende Beispiel zu zsh) Sie können den Code anpassen und in eine "for" -Schleife einfügen.

codification="`file -bi "$1" | awk -F"=" '{print $NF}'`"

[[ "$codification" != "utf-8" ]]  && iconv -f ISO8859-1 -t UTF-8 "$1" > $outfile
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.