Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > nkfライブラリ > NKFモジュール
module NKF
クラスの継承リスト: NKF
Abstract
nkf(Network Kanji code conversion Filter, http://www.ie.u-ryukyu.ac.jp/~kono/nkf/) を Ruby から使うためのモジュールです。
Ruby 1.8.2 以降では nkf の 2.0 以降が取り込まれています。
使い方
以下は、漢字コード変換コマンドの例です。
#!/usr/local/bin/ruby require 'nkf' opt = '' opt = ARGV.shift if ARGV[0][0] == ?- while line = ARGF.gets print NKF.nkf(opt, line) end
以下は、漢字コード判別コマンドの例です。 (Ruby 1.8.2 以降の NKF.guess では、 以下の5種類以外の値になる可能性があります [[trap:NKF]])
#!/usr/local/bin/ruby require 'nkf' CODES = { NKF::JIS => "JIS", NKF::EUC => "EUC", NKF::SJIS => "SJIS", NKF::BINARY => "BINARY", NKF::UNKNOWN => "UNKNOWN(ASCII)", } while file = ARGV.shift str = open(file) {|io| io.gets(nil) } printf "%-10s ", file if str.nil? puts "EMPTY" else puts CODES.fetch NKF.guess(str) end end
オプション文字列
Ruby 1.8.2 以降
NKF 2.0.5 相当です。
b,u Output is buffered (DEFAULT),Output is unbuffered j,s,e,w Outout code is JIS 7 bit (DEFAULT), Shift JIS, AT&T JIS (EUC), UTF-8 After 'w' you can add more options. (80?|16((B|L)0?)?) J,S,E,W Input assumption is JIS 7 bit , Shift JIS, AT&T JIS (EUC), UTF-8 After 'W' you can add more options. (8|16(B|L)?) t no conversion i_/o_ Output sequence to designate JIS-kanji/ASCII (DEFAULT B) r {de/en}crypt ROT13/47 h 1 katakana->hiragana, 2 hiragana->katakana, 3 both m[BQN0] MIME decode [B:base64,Q:quoted,N:non-strict,0:no decode] M[BQ] MIME encode [B:base64 Q:quoted] l ISO8859-1 (Latin-1) support f/F Folding: -f60 or -f or -f60-10 (fold margin 10) F preserve nl Z[0-3] Convert X0208 alphabet to ASCII 1: Kankaku to space,2: 2 spaces, 3: Convert HTML Entity X,x Assume X0201 kana in MS-Kanji, -x preserves X0201 B[0-2] Broken input 0: missing ESC,1: any X on ESC-[($]-X,2: ASCII on NL T Text mode output d,c Delete \r in line feed and \032, Add \r in line feed I Convert non ISO-2022-JP charactor to GETA -L[uwm] line mode u:LF w:CRLF m:CR (DEFAULT noconversion) long name options --fj,--unix,--mac,--windows convert for the system --jis,--euc,--sjis,--utf8,--utf16,--mime,--base64 convert for the code --hiragana, --katakana Hiragana/Katakana Conversion --cap-input, --url-input Convert hex after ':' or '' --numchar-input Convert Unicode Character Reference --no-cp932 Don't convert Shift_JIS FAxx-FCxx to equivalnet CP932 --cp932inv convert Shift_JIS EDxx-EFxx to equivalnet CP932 FAxx-FCxx --ms-ucs-map Microsoft UCS Mapping Compatible
BUGS
Ruby 1.8.2 に添付されている NKF は Unicode 入力時の自動判定の精度が落ちています。 Ruby 1.8.3 以降にバージョンアップするか、 できるだけ明示的に文字コードを指定するようにしましょう。
参考
- "標準添付ライブラリ紹介【第 3 回】 Kconv/NKF/Iconv" http://jp.rubyist.net/magazine/?0009-BundledLibraries#l15
モジュール関数
guess(str)
-
文字列 str の漢字コードを判別して返します。 返される値は、NKF モジュールのモジュール定数です(下記参照)。 ruby 1.8.2 より前は現在の NKF.guess1 と同じものです。 ruby 1.8.2 以降では NKF.guess2 と同じものです。
guess1(str)
-
ruby 1.8.1 以前の NKF.guess と同じものです。
guess2(str)
-
nkf2の漢字コード自動判定ルーチンを利用したものです。
nkf(opt, str)
-
文字列 str の文字コードを変換し、変換結果の文字列を返します。
opt には、nkf と同じコマンドラインオプションを指定します([[unknown:後述|nkf/オプション文字列]])。 複数指定する場合は、NKF.nkf('-Se', str) や NKF.nkf('-S -e', str) などとします。optは、必ず '-' で始めなければいけないことに注意してください。
- 注意
このメソッドは(nkf コマンドがそうであるように)、MIME Base64 の デコード処理がデフォルトでオンになっています。この動作を無効にしたけ れば opt に '-m0' を含めるようにしてください。
定数
ASCII
-
ASCII コードを表します。
BINARY
-
入力が binary であることを表します。
EUC
-
EUC コードを表します。
JIS
-
JIS コードを表します。
SJIS
-
SJIS コードを表します。
UNKNOWN
-
コード判定に失敗したことを表します。
UTF16
-
UTF-16 コードを表します。
UTF8
-
UTF-8 コードを表します。