基本的に使う文字コードはUTF-8ですが、csvをExcelで確認するときなど文字化けしてしまいます。 そこで、文字コードをコマンドでの変換をできる方法をまとめました。
Linux, Macの環境が手元にあるので試してみます。
nfk (Network Kanji Filter) コマンド
日本語の文字コード変換するためのコマンドツールにはnkfを使います。
文字コードだけでなく改行コードも変換できます。 ちなみにzipコマンドで圧縮する時も改行コードを変換できます。詳しくはzipコマンドにあります。
- 英語版のwiki nfk
対応するエンコード
JIS
Shift_JIS
EUC-JP
Unicode
(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)
エンコード 改行文字
-s
Shift-JISにエンコード-c
改行コードをCRLFに変更
$ nkf -sc text.txt > text-jis.txt
$ nkf -g text-jis.txt
Shift_JIS (CR)
-w
UTF-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
あいうえお
かきくけこ
さしすせそ