web-dev-qa-db-ja.com

Debian、ファイルシステムをISO-8859-1からUTF-8に変換する方法は?

Debianの安定版を実行している古いPCがあり、アップグレードが必要です。問題は、すべてにlatin1(ISO-8859-1)を使用していることであり、他の国々がUTF-8に移行したため、このコンピューターも変換する予定です。

そして、この質問では、Sambaで提供されるファイルに焦点を当てます。一部のファイル名には、ラテン語の文字がいくつかあります(åäöなど)。

今の私の計画は、この古いコンピューターのすべてのデータを、Debian安定版(UTF-8を使用)を実行している新しいコンピューターに移動することです。

誰か良いアイデアはありますか?


:後でiconvを使用して、次のようなファイルのコンテンツを変換する予定です。

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

しかし、私はそれ自体をファイルシステムに変換する良い方法を知りません。

:通常、私は通常、あるコンピューターから次のコンピューターへのscpだけですが、その後、utf-8ファイルシステムでlatin1文字になってしまいます。


更新:ファイル名に(面白い文字を含む)ファイルでいっぱいの手で小さなテストラウンドを行いましたが、それはうまくいくように見えました。

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

-r =再帰的; -f/-t = from/to。

したがって、--notest

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

それ以上のものはありません。

7
Johan

Convmvを使用します。

Package: convmv
Priority: optional
Section: utils
Installed-Size: 88
Maintainer: Raphael Zimmerer <[email protected]>
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

:-)

14
cstamas

ファイルを転送する前にこのページにアクセスした読者への注意:

最近のrsyncと--iconvオプションで転送を行うことができます:

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

(はい、iconvの文字セットの順序は直感的ではありません!)

転送がすでに行われている場合は、確かにconvmvがソリューションです。

5
mivk

Unicode(UTF-8/UTF-16/UTF-7/UTF-32)と非Unicode(Ansi、中国語簡体字GBK、繁体字中国語)間の文字エンコード変換をサポートする nicode Char Encoding Converter があります。 BIG5、日本語SHIFT-JIS、日本語EUC-JP、韓国語のeuc-kr文字セットエンコーディングなど)。

0
convert utf8

ファイルがターゲットの体系に含まれていない場合は、最初にテストします。そうでない場合は、ファイルをめちゃくちゃにする可能性があります。 (以下の例はzshの場合)コードを調整して、「for」ループ内に配置できます。

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

[[ "$codification" != "utf-8" ]]  && iconv -f ISO8859-1 -t UTF-8 "$1" > $outfile
0
SergioAraujo

これを現在のディレクトリで実行します。

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