先日Shift_JIS形式でhtmlファイルを作成する案件があり、
納品する前に今一度文字コードを確認しておきたい…と思っていろいろ調べたことメモです。
文字コードを確認する
文字コードを確認するにはfileコマンドにmimeオプションをつけて実行すればOKです。
$ file --mime ファイル名
ここでunknown-8bit
と出てきたのでドキッとしてしまいましたが、unknown-8bit
はShift_JIS
のことだそうでホッと一安心。
文字コードを変換する
文字コードを変換するにはnkfコマンドを使います。
//未インストールの場合、Homebrewでnkfをインストール
$ brew install nkf
//ファイルをShift_JISに変換(上書き保存)する
$ nkf -s --overwrite ファイル名
//ファイルをUTF-8に変換(上書き保存)する
$ nkf -w --overwrite ファイル名
いろいろなcharset
上記のコマンドをテストしようとして適当にテキストファイルを作成したところ、コマンドはもちろんエディターの設定をいろいろ変えて保存してもfile --mime
での出力結果がずっとus-ascii
になってしまい、大いにハマりました。
原因はマルチバイト文字を含まないファイルだったからでした。(本文がtestのみとかだった)
$ file --mime 空のファイル.txt
結果: inode/x-empty; charset=binary
$ file --mime マルチバイトなしファイル.txt
結果: text/plain; charset=us-ascii
$ file --mime utf-8のファイル.txt
結果: text/plain; charset=utf-8
$ file --mime Shift_JISのファイル.txt
結果: text/plain; charset=unknown-8bit
まめると↑のような感じです。
これで困るケースはあまりなさそうですが念のため頭に入れておきたいと思います
参考記事
ありがとうございます