受託の開発会社でWebエンジニアとして働いているモリヤスです!
SQLを学ぶためにとある技術書を読み進めていた時の話。
DBに技術書指定のテーブルやデータを作るために、用意されていたクエリが書かれていたtxtファイルをターミナルのcatコマンドで見たり、VScodeで開くと下記のようになっていました(下記は実際のクエリとは違います)
INSERT INTO test VALUES ('0001', 'ÇËÇÒÇ≤' ,'àflïû');
なんか文字化けしているぞ!!
環境
- Mac
- VScode
- iTerm
nkfコマンド
よし!
ファイルの文字コードを調べてみよう!
ここで今回の記事の本題のnkfコマンドの登場です!
nkfコマンドは「文字コードの種類の判別や変換を行う」時などに使えるLinuxコマンドです。
nkfコマンドはおそらくデフォルトではないので、まずはインストールします!
僕は次のようにHomebrewでインストールしました。(インストールできたかバージョンを確認しています)
$ brew install nkf
$ 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を使って該当ファイルの文字コードを確認します!
$ nkf -g hoge.txt
Shift_JIS
このファイルの文字コードはShift-JISのようです。
ただ、MacのVScodeやiTermのデフォルトの文字コードの設定はUTF-8のようです!(下の画像参照)
では次のnkfコマンドを使ってファイルの文字コードを変更します!
$ nkf -w --overwrite hoge.txt
$ nkf -g hoge.txt
UTF-8
しっかりとUTF-8に変更されていました。
また、hoge.txtを再度開くと文字化けがなくなり、日本語が表示されていたので解決です!
終わりに
必ずではないっぽいのですが、Windowsで作る(見る)ファイルはShift-JIS、Macで作る(見る)ファイルはUTF-8というイメージを持っておくと良いみたいです!
文字化け見ると僕は鳥肌立つんですけど皆さんはどうでしょうか?
そんな文字化けに出くわしても冷静に対処していきましょうd( ̄  ̄)