Linux

【nkf】文字コードを変換する|Linuxコマンド基礎

nkf

今回は、Linuxコマンドで文字コードを変換する方法(nkfコマンド)について分かりやすくご説明いたします。

 

うちぱぱ
うちぱぱ
それでは始めましょう!

文字コードを変換する【nkf】

 

書式

nkf [オプション] [ファイル名]

オプション

-b バッファリングを行う(デフォルト)
-u 出力にバッファリングしない。ネットワーク用途で利用
-j JIS文字コードを出力(デフォルト)
-e EUC文字コードで出力
-s SHIFT-JIS文字コードで出力
-w UTF-8文字コードで出力
-i シーケンス JIS漢字を指示するシーケンスに「ESC-$-シーケンス」を利用。デフォルトは「B」
-o シーケンス 1バイト英数文字を指示するシーケンスに「ESC-$-シーケンス」を利用。デフォルトは「B」
-r ROT13/47暗号を利用
-mQ MIME Quotedでエンコードされた入力をデコード
-mB MIME Base64でエンコードされた入力をデコード
-m0 MIMEをデコードしない
-M MIMEに変換
-MB MIME BASE64に変換
-f 文字数 1行当たりの文字数を指定。デフォルトは60文字
-x 半角仮名(JIS X 0201片仮名)を全角仮名(JIS X 0208)へ変換しない
-J 入力文字コードをISO-2022-JPと仮定
-E 入力文字コードをEUC-JPと仮定
-S 入力文字コードをSHIFT-JISと仮定
-X 半角仮名(JIS X 0201片仮名)を全角(JIS X 0208)へ変換
-B 入力コードを壊れたESCのなくなったISO-2022-JPと仮定
-Lw 改行コードをCR+LF(Windows改行コード)に変換
-Lm 改行コードをCR(Mac改行コード)に変換
-Lu 改行コードをLF(UNIX改行コード)に変換

 

ネットワーク、端末、ホスト間で文字コードを変換するために利用します。
メールやニュースを読み書きするために開発された漢字コードフィルタでしたが、最近はライブラリ、アプリケーションなどの国際化が進み、文字コード変換フィルタとしての利用が主な目的になりつつあります。
文字コード変換のために入力文字コードを指定しなくても、自動認識する機能を持ちます。現在は7bit JIS(ISO-2022-JP)、SHIFT-JIS、EUCを自動判別できます。
出力を指定しない場合は、デフォルトでJIS(ISO-2022-JP)を出力します。入力ファイルを指定しない場合は、標準入力からの入力を待って、標準出力に出力されます。

コマンド実行例

文字コードを変換する

$ nkf -e shift-jis.txt > euc.txt   ⇒SHIFT-JISからEUCに変換

文字コードを変換し、改行コードも変換する

$ nkf -e -Lu windows.txt > unix.txt   ⇒SHIFT-JISからEUCに変換し改行コードを変換

暗号化を利用して文字コードを変換する

$ cat secret.txt
うちぱぱはピーマンが嫌いです。    ⇒ROT13/47する前のテキストファイル

$ nkf -r secret.txt > secret-e.txt   ⇒ROT13/47変換を行う

$ cat secret-e.txt
嗾嚼哂哂圉團倬坏堋營翳嗷囑嚠侑ROT13/47   ⇒変換後のファイルの内容

$ nkf -r secret-e.txt ROT13/47     ⇒変換したファイルを解読
うちぱぱはピーマンが嫌いです。

 

ROT13/47とはCaesar encryption(シーザー暗号)と呼び、13/47文字ずらして暗号化します。例えば「a」は13ずらすと「n」になります。ただし、弱い暗号なため機密情報の通信には向きません。

 

うちぱぱ
うちぱぱ
今回は以上となります!