Linux文字コードの確認と変換の方法

Linux文字コードの確認と変換 Shell

WindowsやMacから送られてきた添付ファイルが文字化けして、読めない事象がありましすね。主な原因は文字コードが異なることで起こります。
また、現在のLinuxではUTF-8が主流ですが、EUC-JPを使っているシステムからファイルをコピーしてくると文字化けすることもあります。
今日はファイルの文字コードの確認方法と変換方法を紹介します。

文字コードの確認方法

fileコマンドで確認

file -i ファイル名

サンプル:
  file -i Test.php
結果:
Test.php: text/x-php; charset=utf-8

nkfコマンドで確認

nkf –guess ファイル名
サンプル:
  nkf –guess Test.php
結果:
  UTF-8 (LF)

文字コードの変換方法

iconvコマンドで変換する

フォーマット:
$ iconv -f <エンコーディング> -t <エンコーディング> <ファイル名>
サンプル:
$ iconv -f SHIFT_JIS -t UTF-8 shift_jis.csv > utf-8.csv
または
$ iconv -f SHIFT_JIS -t UTF-8 shift_jis.csv -o utf-8.csv
参考のオプションとしては以下が用意されています。
 入力/出力形式の指定:
  -f, –from-code=NAME       元のテキストのエンコーディング
  -t, –to-code=NAME         出力用のエンコーディング
 情報:
  -l, –list
                             全ての既知の符号化された文字集合を一覧表示します
 出力制御:
  -c                         出力から無効な文字を取り除く
  -o, –output=FILE          出力ファイル
  -s, –silent               警告を抑制する
      –verbose              経過情報を表示する
  -?, –help                 このヘルプ一覧を表示する
      –usage                短い使用方法を表示する
  -V, –version              プログラムのバージョンを表示する

nkfコマンドで変換する

フォーマット:
 nkf [オプション] <ファイルA> > <ファイルB>
サンプル:
 nkf -w shift_jis.csv > utf-8.csv
参考のオプションとしては以下が用意されています。
-j : ISO-2022-JP に変換
-s : Shift_JIS に変換
-e : EUC-JP に変換
-w : UTF-8 に変換
–overwrite(上書きoption)

vi/vimの場合

フォーマット:
    :set fileencoding=文字コード
    または
    :set fenc=文字コード
エンコーディングには主に以下のものがあります
cp932
shift_jis
euc-jp
utf8

指定な文字コードでファイル内容を確認

フォーマット:
cat ファイル名 | nkf -u -w
※nkfのオプションは上部の内容を参照する

一括でファイルの文字コードを変換する

find . -name ‘*.htm’ -type f -print0 | xargs -0 nkf -u –overwrite -w

おすすめ本

ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方

タイトルとURLをコピーしました