【nkf】Linuxコマンド_日本語ファイルの文字コードを変更する

LinuxOSでは文字コードとして通常「UTF-8」を使用します。
Windowsなどは、「Shift-JIS」を利用します。

LinuxとWindows間で日本語テキストファイルをやりとりする場合、この文字コードを変換する場合があります。

日本語ファイルの文字コードなどを変更したい場合には「nfk」コマンドを使用します。

「nkf」コマンドの使い方(Linux)

「nkf」コマンドはLinuxOSインストール時(minimal)には標準でインストールされていません。

使用するにはインストールが必要となります。

「nkf」コマンドのインストール

CentOS8において「nkf」をインストールできません。
「dnf」、「yum」インストール共にパッケージが見つからないと言うエラーが発生します。

「nkf」コマンドがインストールできない理由

CentOS8では「nkf」のパッケージが無いため、「dnf」、「yum」インストールができないようです。
そのため、「CentOS7」のパッケージから「rpm」コマンドを実行してインストールを実施します。

「nkf」コマンドを「rpm」を利用してインストール実行

以下、CentOS7のパッケージからダウンロード、インストールした実行結果となります。

$ rpm -Uvh http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nkf-2.1.3-5.el7.x86_64.rpm
http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/n/nkf-2.1.3-5.el7.x86_64.rpm を取得中
警告: /var/tmp/rpm-tmp.UK4kys: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:nkf-1:2.1.3-5.el7                ################################# [100%]

日本語ファイルの文字コードを調べる

以下のように日本語で記載されたファイルがあります。

$ nkf test_jp.txt 
福岡
佐賀
大分
長崎
熊本
宮崎
鹿児島

ファイルの文字コードを以下のコマンドで確認します。

$ nkf -g test_jp.txt 
UTF-8

「nkf」コマンドに「-g」オプションを付けて実行することでそのファイルの文字コードが確認できます。
上記の出力結果では、文字コードが「UTF-8」であることが確認できます。

文字コードを変換する

上記の日本語で書かれたファイルの文字コードを「UTF-8」から「Shift-JIS」に変換します。

日本語ファイル「test_jp.txt」の文字コードを「Shift-JIS」に変換し、「>」リダイレクトを用いて「test_jp_sjis.txt」として保存します。
文字コードが変換された「test_jp_sjis.txt」ファイルの文字コードをコマンドで確認すると「Shift-JIS」となっていることが確認できます。

$ nkf -s test_jp.txt > test_jp_sjis.txt 
$ nkf -g test_jp_sjis.txt 
Shift_JIS

「nkf」コマンドオプションを指定して文字コードを変更する

「nkf」コマンドは、指定したファイルの文字コードを、オプションで指定した文字コードに変更します。
以下では各オプションで変換する文字コードをまとめました。

-j JISコードに変更
-e 日本語EUCコードに変更
-s Shift-JISコードに変更
-w Unicode(UTF-8)に変更

「nkf」コマンドオプション

「nkf」コマンドのオプションは以下の通りとなります。

$ nkf --help
Usage:  nkf -[flags] [--] [in file] .. [out file for -O flag]
 j/s/e/w  Specify output encoding ISO-2022-JP, Shift_JIS, EUC-JP
          UTF options is -w[8[0],{16,32}[{B,L}[0]]]
 J/S/E/W  Specify input encoding ISO-2022-JP, Shift_JIS, EUC-JP
          UTF option is -W[8,[16,32][B,L]]
 m[BQSN0] MIME decode [B:base64,Q:quoted,S:strict,N:nonstrict,0:no decode]
 M[BQ]    MIME encode [B:base64 Q:quoted]
 f/F      Folding: -f60 or -f or -f60-10 (fold margin 10) F preserve nl
 Z[0-4]   Default/0: Convert JISX0208 Alphabet to ASCII
          1: Kankaku to one space  2: to two spaces  3: HTML Entity
          4: JISX0208 Katakana to JISX0201 Katakana
 X,x      Convert Halfwidth Katakana to Fullwidth or preserve it
 O        Output to File (DEFAULT 'nkf.out')
 L[uwm]   Line mode u:LF w:CRLF m:CR (DEFAULT noconversion)
 --ic=<encoding>        Specify the input encoding
 --oc=<encoding>        Specify the output encoding
 --hiragana --katakana  Hiragana/Katakana Conversion
 --katakana-hiragana    Converts each other
 --{cap, url}-input     Convert hex after ':' or '%'
 --numchar-input        Convert Unicode Character Reference
 --fb-{skip, html, xml, perl, java, subchar}
                        Specify unassigned character's replacement
 --in-place[=SUF]       Overwrite original files
 --overwrite[=SUF]      Preserve timestamp of original files
 -g --guess             Guess the input code
 -v --version           Print the version
 --help/-V              Print this help / configuration
Network Kanji Filter Version 2.1.3 (2013-11-22) 
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).
Copyright (C) 1996-2013, The nkf Project.

「nkf」コマンドの使い方は以上となります。

エンジニアのオンライン学習

エンジニアにおすすめのオンライン教材比較
ITエンジニアが自宅で学習ができるオンラインスクール比較

エンジニアのおすすめ学習「Progate」と「Udemy」比較

VPS_比較
最新情報をチェックしよう!