技術ノート Linux Linux で iconv コマンドを使用する方法

Linux で iconv コマンドを使用する方法

Linux で iconv コマンドを使用する方法

コンピュータは、文字をさまざまなバイナリ値にマッピングして保存します。それらを適切に表示するには、それらがどのようにエンコードされたかを知る必要があります。 iconv コマンドは、ファイルを新しいエンコーディングに変換します。

ずっとバイナリです

Linux で iconv コマンドを使用する方法

コンピューターが処理または保存するデータの種類に関係なく、データは バイナリ情報 として保持されます。画像、テキスト、音楽、ビデオなどすべてはバイナリ データとして保存されます。データがストレージ デバイス上にあるか、コンピュータのメモリにロードされているかにかかわらず、データはバイナリ値で表されます。

データがテキストであり、そのテキストを画面に表示したい場合は、バイナリ値を文字に変換する変換が必要になります。変換を実行するには、データの作成時に各文字を表すためにどの値が使用されたかを知る必要があります。その後、ソフトウェアは逆方向に作業して、保存された数値を文字にマッピングし直すことができます。

成功は、どのタイプのマッピングが使用されているかを知り、データ作成時およびデータ使用時にマッピングのルールに厳密に従うかどうかに依存するため、そのような文字マッピングを形式化する標準が作成されています。専門用語を正確に理解すれば、簡単に理解できます。

Linux で iconv コマンドを使用する方法

文字、バイト、およびマッピング

文字とは 、文字、数字、または句読点記号、等号「=」やプラス「+」などの数学記号、通貨記号などのその他の表示可能な記号です。画面上でその文字を表すものはグリフと呼ばれ、グリフの集合が書体を構成します。

書体は 、多くの人が 誤ってフォントと呼んでいる ものです。厳密に言うと、フォントは、サイズを拡大または縮小したり、グリフの線を太くまたは細くするためにウェイトを変更したりするなど、変更された書体のバージョンです。書体に関係なく、文字の数値表現は変わりません。

単一のマッピング内のすべての文字は、 文字セットと 呼ばれます。セット内の各文字には、 コード ポイント と呼ばれる独自の固定された一意の数値があります。文字または記号が文字セットに含まれていない場合、つまり、その文字または記号に対応するコード ポイントがない場合、その文字セットを使用して表示することはできません。重要な考慮事項は、1 つの文字を表すために使用されるバイト数です。 1 文字あたりに使用するバイト数が増えるほど、より多くの文字をセットに含めることができます。

すべてのシングルバイト文字セットの祖父は ASCII 標準 です。これは、テレプリンターで使用するために 128 の異なるコード ポイントをエンコードする 7 ビット標準が定められた 1960 年代後半に起源を持ちます。対照的に、 Unicode 標準 には合計 1,114,112 個のコード ポイントが含まれています。 Unicode はすべての人間の言語に文字マッピングのサポートを提供しようとするため、このような大きなコード スペースが必要になります。

コード ポイントを保存するために固定バイト数を使用するのは無駄です。コード ポイントを識別するために 1 バイトだけが必要な場合、そのコード ポイント用に予約されている他のバイトは冗長です。 Unicode マルチバイト可変長文字セットでは、コード ポイントに可変バイト数が使用され、複雑なコード ポイントを記述するには最大 4 バイトが必要になります。

したがって、コード ポイントは 2 種類のデータをエンコードする必要がある場合があります。表現する文字を識別する必要があり、コード ポイントのバイト数など、それ自体に関する メタデータ が含まれている必要があります。また、一部の文字は、最終的なグリフを取得するために他の文字と組み合わせる必要があるため、コード ポイントでその情報もエンコードする必要があります。

可変長スキームの利点は、本当に必要なバイトのみを使用できることです。これは効率的であり、ファイルが小さくなります。欠点は、データの読み取りと解析がより複雑になることです。また、ある文字セットから別の文字セットへの変換は、非常に短時間で非常に困難になる可能性があります。

そこでiconvコマンドが登場します。

Linux で iconv コマンドを使用する方法

iconv コマンドの使用方法

コマンド ライン オプションの点で iconv コマンドに欠けているものは、サポートされる 文字エンコーディング の数によって十分に補われています。 1,100 を超える異なるエンコーディングがリストされていますが、多くは同じもののエイリアスです。 -l (リスト) オプションを使用すると、サポートされているすべてのエンコーディングを一覧表示できます。

 iconv -l

iconv を使用するには、ソース ファイルと出力ファイル、変換元のエンコーディングと変換先のエンコーディングを指定する必要があります。ファイル名を指定しない場合、iconv は STDIN と STDOUT を使用して、コマンド ラインから入力を取得し、その出力を端末ウィンドウに書き込みます。入力を iconv にパイプすることも、その出力をファイルにリダイレクトすることもできます。

STDIN で iconv を使用して、いくつかの点を説明します。入力テキストのエンコーディングを指定する必要があるため、locale コマンドを使用してそれが何であるかを調べます。

ロケール

最初の行は、米国英語と Unicode UTF-8 エンコーディングを使用していることを示しています。テスト文字列には、プレーン テキスト、アクセント付きの単語、英語以外の文字 (ドイツ語の エスツェット 文字 ß)、およびユーロの通貨記号が含まれています。

プレーン à アクセント付き非英語 ß 外貨 €

これをASCIIに変換してみます。 echo を使用して入力テキストを iconv に パイプしています 。 -f (from) オプションを使用して入力エンコーディングが UTF-8 であることを指定し、-t (to) オプションを使用して出力が US-ASCII であることを示します。

 echo plain à アクセント付き非英語 ß 外貨 € | iconv -f UTF-8 -t US-ASCII

それは最初のハードルで失敗します。 US-ASCII には「à」に相当する文字がないため、変換は中止されます。 iconv はゼロ オフセット カウントを使用するため、問題は位置 6 で発生したことがわかります。 -c (続行) オプションを追加すると、iconv は変換できない文字を破棄し、残りの入力の処理を続行します。

 echo plain à アクセント付き非英語 ß 外貨 € | iconv -f UTF-8 -t US-ASCII

コマンドは完了まで実行されますが、出力には文字が欠落しています。 iconv を作成して、類似の文字または他の表現を置き換えることによって、変換不可能な文字の近似を提供することができます。それを管理できない場合は、疑問符「?」が挿入されます。そのため、文字が変換されていないことが簡単にわかります。

このプロセスは 音訳と 呼ばれ、これを呼び出すには、ターゲット エンコーディングに文字列「//TRANSLIT」を追加します。

 echo plain à アクセント付き非英語 ß 外貨 € | iconv -f UTF-8 -t US-ASCII//TRANSLIT

これで、「à」の代わりに「a」、「ß」の代わりに「ss」、通貨記号「€」の代わりに「EUR」が含まれた完全な出力テキストが得られました。

Linux で iconv コマンドを使用する方法

ファイルでの iconv の使用

ファイルでの iconv の使用は、コマンド ラインでの使用と非常に似ています。ソース ファイルのエンコード タイプを確認するには、file コマンドを使用します。

ファイル -i input.txt

入力ファイルは UTF-16LE エンコーディングです。これは 16 ビットの リトルエンディアン エンコードです。次のようになります。

 input.txt を減らす

目を細めて白い文字を読むと、実際の文字列を読み取ることができます。多くのソフトウェアはこのようなファイルをバイナリ ファイルとして誤って扱うため、UTF-8 に変換します。

-f (from) オプションを使用して入力ファイルのエンコーディングを指定し、-t (to) オプションを使用して UTF-8 で出力することを iconv に指示しています。 -o (出力) オプションを使用して出力ファイルに名前を付ける必要があります。入力ファイルに名前を付けるオプションは使用しません。単にその名前を iconv に伝えるだけです。

 iconv -f UTF-16LE -t UTF-8//TRANSLIT 入力.txt -o 出力.txt

出力ファイルは次のようになります。

出力を減らす.txt 

Linux で iconv コマンドを使用する方法

必要なときに電力を供給

iconv は頻繁には使用しないかもしれませんが、必要なときにベーコンを節約できます。

Windows や Mac コンピュータを使用している人、そして海外からのファイルもよく送られてきます。それらはあらゆる種類のエンコーディングで到着します。 Linux 上でこれらのファイルを簡単に操作できるようにしてくれる iconv に何度も感謝しています。

「 Linux で iconv コマンドを使用する方法」に関するベスト動画選定!

私はLinuxのコマンドをどうやって覚えたのか?!
よく使うLinuxコマンドについて丁寧に解説します