OSDNの閉鎖に伴い、GitHubに移行しました。
https://github.com/tachibana2/inkf
inkf は、nkf-2.x互換の文字コード変換コマンドです。Shift_JIS, ISO-2022-JP, EUC-JP(CP51932, EUCJP-MS), UTF-8, UTF-7, UTF-7-IMAP, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, EUC-KR, GB18030, BIG5, ISO-8859-*, KOI8, CP1251, CP1252, CP1258等が扱えます。
また、iconvコマンドの-f, -tオプションと互換性があります。 iconvやnkfなどのライブラリには依存していません。
UTF-16サロゲートペア、3バイトEUC-JP、半角カナ、GB18030 2004に対応しています。
文字セットを指定すると、必ず上位の文字集合で変換が行われます。
改行コード変換、MIMEエンコード/デコードなどの基本機能は持っていますが、その他の細かい機能で省略しているものがあります。
おまけで、http, https (要openssl), ftpでのファイル取得機能、およびマルチトラック対応の MIDI ファイル作成機能がついています。
http, httpsでのファイル取得機能はリダイレクトに対応しているため、OSDNからのファイルダウンロードがwgetよりも簡単に行えます。
例1) Shift_JIS から UTF-8 に変換
cat sjisfile.txt | inkf -Sw > utf8file.txt
例2) 指定の URL から HTML を取得してプレーンテキストに変換し EUC-JP で出力
inkf -e --html-to-plain http://www.example.com/
例3) MIDI ファイル(ドレミ)を作成
echo "cde" | inkf -O --midi mymusic.mid
GNU/Linux x86 上の GCC (g++) 2.95.3 でコンパイル・動作を確認しました。
* MacOSX、Solaris、各種BSD 等でも動作すると思います。
指定できるオプションは以下の通り。 -Sj のように続けることができます。
-j JIS コードを出力します。
-e EUC-JP コードを出力します。
-s Shift_JIS コードを出力します。
-l Latin1 コードを出力します。
-c GB2312 コードを出力します。
-b BIG5 コードを出力します。
-w -w8[0] -w16[BL][0] -w32[BL][0]
Unicode を出力します。
-w -w80
UTF-8 コードを出力します。 (BOM 無し)
-w8 UTF-8 コードを出力します。
-w16 -w16B0
UTF-16 コードを出力します。 (Big Endian / BOM 無し)
-w16B
UTF-16 コードを出力します。 (Big Endian / BOM 有り)
-w16L
UTF16 コードを出力します。 (Little Endian / BOM 有り)
-w16L0
UTF-16 コードを出力します。 (Little Endian / BOM 無し)
-w32 -w32B0
UTF-32 コードを出力します。 (Big Endian / BOM 無し)
-w32B
UTF-32 コードを出力します。 (Big Endian / BOM 有り)
-w32L
UTF-32 コードを出力します。 (Little Endian / BOM 有り)
-w32L0
UTF-32 コードを出力します。 (Little Endian / BOM 無し)
-m[BQN0]
MIME を解読します。
-mB MIME base64 stream を解読します。
-mQ MIME quoted stream を解読します。
-mN MIME のチェックを緩くします。
-m0 MIME を解読しません。
-M[BQbq]
MIME 変換します。
-M ヘッダ形式に変換します。
-MB base64 stream に変換します。
-MQ Quoted stream に変換します。
-Mb BASE64 のヘッダ形式に変換します。
-Mq Quoted Printable のヘッダ形式に変換します。
-J -E -S -W
期待される入力コードの性質を指定します。
-J ISO-2022-JP を仮定します。
-E 日本語 EUC-JP を仮定します。
-S Shift_JIS を仮定します。
-C GB2312 コードを仮定します。
-B BIG5 コードを仮定します。
-W UTF-8 を仮定します。
-W8 UTF-8 を仮定します。
-W16
UTF-16 (Little Endian)を仮定します。
-W16B
UTF-16 (Big Endian)を仮定します。
-W16L
UTF-16 (Little Endian)を仮定します。
-W32
UTF-32 (Little Endian)を仮定します。
-W32B
UTF-32 (Big Endian)を仮定します。
-W32L
UTF-32 (Little Endian)を仮定します。
-l 0x80-0xfe のコードを Latin-1 として扱います。
-O ファイルに出力します。
-L[uwm]
改行コードを変換します。
-Lu
unix (LF)
-Lw
windows (CRLF)
-Lm
old mac (CR)
デフォルトでは変換しません。
-N MIMEエンコード/デコード時に改行コードを除去しません。
-n 不用な改行コードを出力しません。
--ic= --oc=>
入力・出力の漢字コード系を指定します。
-f -t >
入力・出力の漢字コード系を指定します(iconv互換用)。
--hiragana --katakana
平仮名、片仮名変換をします。
--zenkaku-ascii
全角アルファベットに置換します。
--hankaku-ascii
半角アルファベットに置換します。
--zenkaku-katakana
カタカナを半角から全角に置換します。
--hankaku-katakana
カタカナを全角から半角に置換します。
--html-to-plain
HTMLをプレーンテキストに変換します。
-g --guess
自動判別の結果を出力します。
--midi
標準MIDIファイルを出力します。
--md5
MD5 sumを出力します。
--sha1
SHA-1 sumを出力します。
--sort-csv=
1行目がヘッダのCSVファイルを昇順でソートします。
--sort-csv-r=
1行目がヘッダのCSVファイルを降順でソートします。
--format-json
JSONを整形します。
--minify-json
JSONをミニマイズします。
--re-match=<パターン>
正規表現マッチを行います。
--overwrite
ファイルを上書きします。
--help
コマンドの簡単な説明を表示します。
-v --version
inkf のバージョンを表示します。
ほとんどの環境では、makeコマンドの実行のみでコンパイル可能です。
例)
# tar zxf inkf-2.0.0.tar.gz
# cd inkf-2.0.0/
# make
# make install
標準で、Cライブラリ libinkf を提供しています。
LGPLv2 で公開しています。