文字コードの変更

文字コードを変更するには iconv コマンドが使えます。

文字コードを考えるには、文字集合や符号化方式 (エンコーディング) を考える必要がありますが、 ここではいろいろひっくるめてどれも「文字コード」という言葉で済ませます。

サポートされる文字コードの一覧は -l オプションで表示できます。

$ iconv -l

変換前の文字コードを -f オプションで指定して、変換後の文字コードを -t オプションで指定します。

$ iconv -f 変換前の文字コード -t 変換後の文字コード 入力ファイル

例えば、UTF-8 のテキストファイル file1.txt を読み取り、 SHIFT-JIS にして file2.txt として保存するには次のようにします。

$ iconv -f UTF-8 -t SHIFT-JIS file1.txt > file2.txt

入力は標準入力からも入力できます。結果は標準出力に出力されるので、ファイルに保存するには上のようにリダイレクトすれば OK です。

リダイレクトではなく、出力ファイルを -o オプションで次のように指定することも可能です。

$ iconv -f UTF-8 -t SHIFT-JIS -o file2.txt file1.txt

念のため、本当に文字コードが変換されているか確認するには、次のように xxd コマンドで文字コードを HEX 表示することで確認できます。

$ cat file1.txt | xxd
00000000: e383 86e3 82b9 e383 880a                 ..........
$ cat file2.txt | xxd
00000000: 8365 8358 8367 0a                        .e.X.g.

どちらも「テスト」という文字のバイトシーケンスで、file1.txt は UTF-8 で、file2.txt は Shift JIS になっています。

以上、文字コードの変換を行う iconv コマンドを紹介しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Linux 入門