nkf

nkf は,文字コードを変換するツールです。



ダウンロード

インストール

Windows

W32TeX には標準で含まれています。 Windows に TeX Live を『[改訂第7版]LaTeX2e 美文書作成入門』からインストールした場合も付属しています。

それ以外の場合は,Vector のサイトから,ビルド済みのバイナリを入手してインストールするのが簡単です。

アーカイブファイルを展開すると複数の exe ファイルがありますが,このうち nkfwin/vc2005/win32(98,Me,NT,2000,XP,Vista,7)Windows-31J/ フォルダ配下の nkf32.exe はデフォルトで Windows-31J(Shift_JIS の拡張)に変換してくれるので,よく使われています。 これを nkf.exe とリネームしてパスの通ったディレクトリに配置するとよいでしょう。 (環境変数 Path については Microsoft Windows/基礎知識 を参照してください。)

macOS

Homebrew でインストールする場合は

$ brew install nkf

MacPorts でインストールする場合は

$ sudo port install nkf

ビルド

MSYS2

MinGW

ソースからビルドする方法です。

$ curl -kRLO http://jaist.dl.osdn.jp/nkf/70406/nkf-2.1.5.tar.gz
$ tar xvf nkf-2.1.5.tar.gz
$ pushd nkf-2.1.5
$ make
$ make prefix=/mingw install
mkdir /mingw/bin
mkdir: cannot create directory `/mingw/bin': File exists
make: [install] Error 1 (ignored)
mkdir /mingw/man
mkdir: cannot create directory `/mingw/man': File exists
make: [install] Error 1 (ignored)
mkdir /mingw/man/man1
mkdir: cannot create directory `/mingw/man/man1': File exists
make: [install] Error 1 (ignored)
mkdir /mingw/man/ja
mkdir /mingw/man/ja/man1
cp -f nkf /mingw/bin/
cp -f nkf.1 /mingw/man/man1/
cp -f nkf.1j /mingw/man/ja/man1/nkf.1

エラーが表示されますがインストールされるので気にしないでください.

$ popd

インストールの確認

Windows では nkf の場所は以下のようにして確認できます.

PS > Get-Command nkf | Select-Object Path
エイリアスを使用した場合は
PS > gcm nkf | select path
Path
----
C:\w32tex\bin64\nkf.exe
C:\w32tex\bin\nkf.exe
>where nkf
C:\w32tex\bin64\nkf.exe
C:\w32tex\bin\nkf.exe
$ which nkf
/mingw/bin/nkf.exe

または

$ type nkf
nkf is /mingw/bin/nkf

使い方

upLaTeX, LuaLaTeX, XeLaTeX を使う場合は,TeX ソースやパッケージファイルの文字コードを UTF-8 に統一する必要があります*1。 このような場合に nkf が有用です。

たとえば,古い TeX 環境などで Shift_JIS で作成した TeX ソース src.tex を UTF-8 に変換して dest.tex として保存したい場合は

$ nkf -w src.tex > dest.tex

と入力します。 このとき,nkf は変換元の src.tex の文字コードを自動判定して読み込み,-w オプションの指定に従って BOM (Byte Order Mark) 無しの UTF-8 (UTF-8N) へ変換します。 変換結果は標準出力に出るため,これを dest.tex にリダイレクトしています。 BOM 付きの UTF-8 にしたい場合は,オプションを -w の代わりに -w8 とします。

もし,別のファイルに書き出すのではなく上書きして構わない場合は

$ nkf -w --overwrite src.tex

のように --overwrite オプションを付けます。

学会のスタイルファイルが Shift_JIS で配布されていて,UTF-8 で作成した TeX ソースを提出時に Shift_JIS に変換する必要が生じた場合は

$ nkf -s src.tex > dest.tex

のようにします。 オプション -s は Shift_JIS への変換を表します。

関連リンク


*1 pLaTeX や upLaTeX の場合は ptexenc による文字コード変換が自動で行われるので問題はありませんが,LuaLaTeX の場合は UTF-8 しか受け付けないため他の文字コードでは invalid character のエラーになります(参考:forum:1651)。

Last-modified: 2023-10-14 (土) 09:56:44 (212d)