web-dev-qa-db-ja.com

LinuxでUTF-8とISO-8859の間でファイルを変換する

Unicodeに直面するたびに、何も機能しません。私はLinuxを使用しており、Windowsから次のファイルを入手しました。

$file *
file1: UTF-8 Unicode text
file2: ISO-8859 text
file3: ISO-8859 text

ファイルのエンコーディングが異なることがわかるまで、何も機能しませんでした。私は自分の生活を楽にし、それらをすべて同じ形式にしたいです。

iconv -f UTF-8 -t ISO-8859 file1 > test
iconv: conversion to `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.

ISOに変換しようとしたのは、変換が1回だけであるためです。+これらのISOファイルをgeditで開くと、ドイツ語の文字「ü」が問題なく表示されます。さて、次の試み:

iconv -f ISO-8859 -t UTF-8 file2 > test
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.

しかし、明らかにそれはうまくいきませんでした。

5
user3182532

ISO-8859-x(Latin-1)エンコーディングには非常に限られた文字しか含まれていません。作業を楽にするために、常にUTF-8にエンコードするようにしてください。

また、utf-8(Unicode)はISO 8859のスーパーセットであるため、UTF-8をISO8859に変換できなかったのも当然です。

コマンドfileは、ファイルエンコーディングの非常に限られた情報を提供するだけのようです

@hobbsのコメントで示唆されているように、ISO-8859-1またはISO-8859-15のいずれか、または2〜14のその他のエンコードから推測することができます。

そして、iconv -lによってiconvのサポートされているエンコーディングを取得できます。

人生が実際のファイルエンコーディングを推測するのが簡単ではない場合、 このばかげたスクリプトはあなたを助けるかもしれません:D

5
armnotstrong