つい先日、Shift_JISのcsvファイルじゃないとアップロードできない件があり、文字コードの変換を余儀なくされたので忘れないようにメモ。
文字コードの確認・変換にはnkfコマンドが便利です。nfkコマンドはHomebrewでインストールできます。
$ brew install nkf
# バージョン確認をしておきます
# 2025年6月26日現在で確認しました
$ nkf --version
Network Kanji Filter Version 2.1.5 (2018-12-15)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2018, The nkf Project.
目次
文字コードを確認する
$ nkf -g <ファイル名>
# または
$ nkf --guess <ファイル名>
文字コードの確認はfileコマンドでも確認できます。
$ file --mime <ファイル名>
fileコマンドの場合は、ややこしいけど unknown-8bit と出てきたらそれは Shift-JIS のことだそうです。
文字コードを変換する
nkfコマンドの使い方は、
$ nkf <オプション> <ファイル> [> 出力ファイル]
よく使うオプション
-w : UTF8コードを出力(BOM無し)
-e : EUCコードを出力
-s : Shift-JISコードを出力
-j : JISコード(ISO-2022-JP)を出力
-Lu : unix改行形式(LF)に変換
-Lw : windows改行形式(CRLF)に変換
-Lm : mac改行形式(CR)に変換
-g(--guess) : 文字コード自動判別の結果を表示
--overwrite : 元のファイルを上書きする
--version : バージョン情報を表示
使用例をいくつか
# UTF-8に変換(上書き)
$ nkf -w --overwrite <ファイル>
# Shift-JISに変換(上書き)
$ nkf -s --overwrite <ファイル>
# EUC-JPに変換(上書き)
$ nkf -e --overwrite <ファイル>
# JIS(ISO-2022-JP)に変換(上書き)
$ nkf -j --overwrite <ファイル>
# unix改行形式(LF)に変換(上書き)
$ nkf -Lu --overwrite <ファイル>
# windows改行形式(CRLF)に変換(上書き)
$ nkf -Lw --overwrite <ファイル>
# mac改行形式(CR)に変換(上書き)
$ nkf -Lm --overwrite <ファイル>
複数ファイルをまとめて変換
ディレクトリ内のファイルをまとめて変換できます。
例えば、ディレクトリ内にある拡張子htmlのすべてのファイルを文字コード=UTF-8、改行コード=LFに変換する
$ nkf -wLu --overwrite *.html