このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】文字コードの変換:iconvコマンド

文字コードの変換:iconvコマンド

 文字コードは、文字をコンピュータ内部でビット列として表現する方法です。異なる文字コードを使用することで、同じ文字が異なるビット列として保存されます。これにより、異なるシステムやアプリケーション間でのデータのやり取りや表示において、文字化けが発生することがあります。

 たとえば、ひらがなの「あ」は、シフトJISでは0x82A0、UTF-8では0xE38182として表現されます。こうした違いにより、異なる文字コードを使用するファイルを読み書きする際には、適切な変換が必要です。

 そこで、文字コードの変換にはiconvコマンドが使用されます。iconvコマンドは、ファイルの文字コードを指定した形式に変換するツールであり、様々な文字コード間の変換を簡単に行うことができます。

例:ひらがなの「あ」の表現

文字コード表現
シフトJIS0x82A0
UTF-80xE38182
ひらがなの「あ」の表現

主な文字コード

文字コード説明
ASCII英数字や制御文字を7ビットで表現する。基本的な文字セット。
UTF-8可変長エンコーディング。1〜4バイトで文字を表現。多言語対応が可能。
シフトJIS(SJIS)日本語の文字コード。2バイトで漢字などを表現。
主な文字コード

UTF-8について

 UTF-8は、多くのOSやアプリケーションで標準的に使用されている文字コードです。UTF-8は可変長エンコーディングで、多言語対応が可能であり、ASCIIとの互換性があります。

iconv コマンドの概要

 iconv コマンドは、ファイルの文字コードを変換するためのツールです。特定の文字コードから別の文字コードに変換することで、異なるシステムやアプリケーション間でのデータ互換性を確保し、文字化けを防ぐことができます。

項目説明
構文iconv [オプション] [入力ファイル名]
iconv コマンドの概要

主なオプションと説明

オプション説明
-f入力文字コードを指定する
-t出力文字コードを指定する
-l, --list使用可能な文字コードの一覧を表示する
-o, --output=ファイル名出力ファイル名を指定する
主なオプションと説明

コマンドの使用例と解説

1.UTF-8で作成されたutf-8.txtを作成する。

・「echo "こんにちは" > utf-8.txt」コマンドを実行します。

user01@ubuntu-vm:~$ echo "こんにちは" > utf-8.txt

2.utf-8.txtを表示する。

・「cat utf-8.txt」コマンドを実行します。

user01@ubuntu-vm:~$ cat utf-8.txt
こんにちは

3.utf-8.txtをシフトJISに変換し、shift-jis.txtファイルとして保存する。

・「iconv -f UTF-8 -t SHIFT-JIS utf-8.txt -o shift-jis.txt」コマンドを実行します。

user01@ubuntu-vm:~$ iconv -f UTF-8 -t SHIFT-JIS utf-8.txt -o shift-jis.txt

 このコマンドは、iconv を使用して utf-8.txt ファイルの文字コードを UTF-8 から Shift-JIS に変換し、結果を shift-jis.txt ファイルに出力します。それぞれのオプションとパラメータの意味を下表にまとめます。

各部分の説明

部分説明
iconv文字コード変換を行うコマンド。
-f UTF-8入力ファイルの文字コードを指定。ここでは UTF-8。
-t SHIFT-JIS出力ファイルの文字コードを指定。ここでは Shift-JIS。
utf-8.txt変換する元の入力ファイル。
-o shift-jis.txt変換後の出力ファイル名を指定。ここでは shift-jis.txt
各部分の説明

4.shift-jis.txtを表示する:文字化けしていることを確認する。

・「cat shift-jis.txt」コマンドを実行します。

user01@ubuntu-vm:~$ cat shift-jis.txt
����ɂ���

5.shift-jis.txtを適切に表示する。

・「iconv -f SHIFT-JIS -t UTF-8 shift-jis.txt」コマンドを実行します。


user01@ubuntu-vm:~$ iconv -f SHIFT-JIS -t UTF-8 shift-jis.txt
こんにちは

 このコマンドは、iconv を使用して shift-jis.txt ファイルの文字コードを Shift-JIS から UTF-8 に変換し、結果を標準出力(通常は端末)に表示します。それぞれのオプションとパラメータの意味を下表にまとめます。。

各部分の説明

部分説明
iconv文字コード変換を行うコマンド。
-f SHIFT-JIS入力ファイルの文字コードを指定。ここでは Shift-JIS。
-t UTF-8出力文字コードを指定。ここでは UTF-8。
shift-jis.txt変換する元の入力ファイル。
各部分の説明

6.演習で作成したファイルを削除する。

・「rm shift-jis.txt utf-8.txt」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

この演習で作成したファイルを削除します。

user01@ubuntu-vm:~$ rm shift-jis.txt utf-8.txt 
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

項目説明
文字コード文字をビット列で表現する方法。
ひらがなの「あ」はシフトJISで0x82A0、UTF-8で0xE38182。
主な文字コードASCII、UTF-8、シフトJIS
UTF-8多くのOSで標準的に使用される。
iconv コマンド文字コードの変換に使用される。
構文iconv [オプション] [入力ファイル名]
主なオプション-f (入力文字コード), -t (出力文字コード), -l (使用可能な文字コードの一覧を表示), -o (出力ファイル名)
使用例utf-8.txtを作成し、シフトJISに変換してshift-jis.txtとして保存する。
まとめ

これにより、文字コードの管理と変換が容易になります。