基本的に使う文字コードはUTF-8ですが、csvをExcelで確認するときなど文字化けしてしまいます。 そこで、文字コードをコマンドでの変換をできる方法をまとめました。
Linux, Macの環境が手元にあるので試してみます。
nfk (Network Kanji Filter) コマンド
日本語の文字コード変換するためのコマンドツールにはnkfを使います。
文字コードだけでなく改行コードも変換できます。 ちなみにzipコマンドで圧縮する時も改行コードを変換できます。詳しくはzipコマンドにあります。
- 英語版のwiki nfk
対応するエンコード
JISShift_JISEUC-JPUnicode(UTF-8, UTF-16..)
参考:文字コードの考え方から理解するUnicodeとUTF-8の違い
環境
- CentOS 6.9
- Mac macOS High Sierra
上記の環境でのインストールと動作確認をします。
インストール
どの環境も初期状態ではコマンドがありませんでした。 それぞれの環境でインストールと使い方をまとめます。
-hはヘルプではなくひらがなカタカナ変換オプションです。
ヘルプはnkf --helpで確認すること。
Linux (CentOS 6.9)
$ sudo yum install nkf
バージョンを確認。
$ nkf --version
Network Kanji Filter Version 2.0.8 (2007-07-20)
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW
Copyright (C) 2002-2007 Kono, Furukawa, Naruse, mastodon
Version 2.1.2はこちらの方法でソースからコンパイルできます。 今回はVersion 2.0.8で進める。
Mac
homebrewを使ってnkfをインストールします。 とりあえずhomebrewをアップデートする。
$ brew update
$ brew -v
Homebrew 1.9.3
nkfのインストールとバージョン確認。 yumでインストールした時よりも新しいVersion 2.1.4でした。
$ brew install nkf
$ nkf -v
Network Kanji Filter Version 2.1.4 (2015-12-12)
Copyright (C) 1987, FUJITSU LTD. (I.Ichik
基本的な使い方
viで日本語のテキストtext.txtを作成した。
text.txt
あいうえお
かきくけこ
さしすせそ
文字コードを確認する
-g文字コードを確認する
$ nkf -g text.txt
UTF-8 (LF)
エンコード 改行文字
-sShift-JISにエンコード-c改行コードをCRLFに変更
$ nkf -sc text.txt > text-jis.txt
$ nkf -g text-jis.txt
Shift_JIS (CR)
-wUTF-8にエンコード-d改行コードをLFに変更
$ nkf -dw text-jis.txt > text-utf8.txt
$ nkf -g text-utf8.txt
UTF-8
| オプション | 説明 |
|---|---|
| -j | JIS 7 bit (DEFAULT) |
| -s | Shift JIS |
| -e | EUC-JP |
| -w | UTF-8 |
| -w8 | UTF-8 |
| -w16 | UTF-16 |
| -c | 改行コードをCRLFに変更 |
| -d | 改行コードをLFに変更 |
実はこんな書き方もできる。
| オプション | 説明 |
|---|---|
| --windows | Shift JIS |
| --mac | Shift_JIS |
| --unix | EUC-JP |
--macはなぜかUTF-8ではない。
まとめて変換
テキストをまとめて**utf-8(LF)**へ変換する。上書きオプションをつけると可能。
--overwrite上書きする。
$ nkf -dw --overwrite *.txt
$ nkf -g *.txt
text-jis.txt:UTF-8 (LF)
text-utf8.txt:UTF-8 (LF)
text.txt:UTF-8 (LF)
ひらがな <-> カタカナ
なんと、ひらがなとカタカナを変換できる。
$ cat text.txt
あいうえお
かきくけこ
さしすせそ
--katakanaひらがなをカタカナに変換
$ nkf -w --hiragana text.txt > text-k.txt
$ cat text-k.txt
アイウエオ
カキクケコ
サシスセソ
--katakanaひらがなをカタカナに変換
$ nkf -w --hiragana text-k.txt > text-h.txt
$ cat text-h.txt
あいうえお
かきくけこ
さしすせそ