Linux ファイルの文字コードを確認する

  • 作成日 2022.03.08
  • 更新日 2026.06.05
  • linux
Linux ファイルの文字コードを確認する

Linuxでファイルの文字コードを確認したい場合は、「file」コマンドや「nkf」コマンドを使用します。

文字コードの確認は、UTF-8やShift-JISの判定、CSVファイルの文字化け調査、システム間のファイル連携時などで頻繁に必要になります。

特に、日本語ファイルを扱う環境では、文字コードの違いによって文字化けやデータ取り込みエラーが発生することがあるため、事前に文字コードを確認することが重要です。

この記事では、Linuxでファイルの文字コードを確認する方法、UTF-8やShift-JISの判定方法、文字コード変換の方法について詳しく解説します。

環境

  • OS CentOS Stream release 9
  • shell: /bin/bash

手順

ファイルの文字コードを確認するには、「file」コマンドのオプション「-i」を使用します。

実際に、文字コードを確認してみます

$ file -i docker-compose.yml

docker-compose.yml: text/plain; charset=us-ascii

文字コードが表示されていることが確認できます。

「docker-compose.yml」に日本語を追加して、再度確認してみます。

$ file -i docker-compose.yml
docker-compose.yml: text/plain; charset=utf-8

「UTF-8」に変わっていることが確認できます。
※マルチバイト文字を追加することで「文字コード」を指定することができます。

空のファイルの場合は「x-empty」となります。

$ file -i hoge.txt
hoge.txt: inode/x-empty; charset=binary

nkfコマンド

「nkf」コマンドを使用しても確認することは可能です。

$ nkf --guess hello.js

ASCII (LF)

「nkf」コマンドがない場合は、インストールすると使用できるようになります。

$ sudo dnf install nkf

「file」で同じファイルを確認した結果は、以下となります。

$ file -i hello.js

hello.js: text/plain; charset=us-ascii

文字コード変換

文字コードを変換する場合は「iconv」を使用します。

$ iconv -f 変換前の文字コード -t 変換後の文字コード 変換対象ファイル > 保存するファイル名

実際に「UTF-8」から「SHIFT-JIS」に変換した「sjis.yml」というファイルを作成してみます。

$ iconv -f UTF8 -t SHIFT-JIS docker-compose.yml > sjis.yml

確認してみます。
※「unknown-8bit」は「SHIFT-JIS」となります。

$ file -i sjis.yml
sjis.yml: text/plain; charset=unknown-8bit

複数ファイルの文字コードを確認する

複数のファイルをまとめて確認したい場合は、「find」と組み合わせて実行します。

find . -type f -exec file -i {} \;

カレントディレクトリ配下のすべてのファイルについて、文字コードを確認できます。

特定の拡張子のみ確認する場合は、以下のように指定します。

find . -name "*.csv" -exec file -i {} \;

ディレクトリ内の文字コードを一覧表示する

CSVやテキストファイルの文字コードを一括確認する場合は、以下が便利です。

for file in *.csv
do
echo "$file"
nkf --guess "$file"
done

実行結果例

大量のCSVファイルを確認する際に便利です。

BOM付きUTF-8を確認する

Windowsで作成されたUTF-8ファイルは、BOM付きの場合があります。

BOMを確認するには、以下を実行します。

xxd sample.txt | head

実行結果例

先頭に「EF BB BF」が存在する場合は、UTF-8 BOM付きファイルです。

改行コードも確認する

文字コードと合わせて改行コードも確認することがあります。

nkfを使用すると、改行コードも確認できます。

nkf --guess sample.txt

実行結果例

Shift-JISからUTF-8へ変換する場合は、「iconv」を使用します。

LF     Linux
CRLF   Windows
CR     古いMac

まとめ

Linuxで文字コードを確認する場合は、「file」や「nkf」コマンドを使用します。

file -i sample.txt
nkf --guess sample.txt

特に以下の用途でよく利用されます。

・UTF-8か確認する
・Shift-JISか確認する
・CSVファイルの文字化け調査
・文字コード変換前の確認
・改行コードの確認
・システム連携時のファイル調査

日本語ファイルを扱う場合は、「file」と「nkf」の両方で確認すると、より正確に文字コードを判定できます。