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エンジニアが自宅で学習ができるオンラインスクール比較 | |