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=binarynkfコマンド
「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」の両方で確認すると、より正確に文字コードを判定できます。
-
前の記事
MySQL テーブルのキー制約を一覧で取得する 2022.03.08
-
次の記事
javascript エラー「TypeError: Attempting to change configurable attribute of unconfigurable property.」の解決方法 2022.03.08
コメントを書く