Ruby 1.9.0 リファレンスマニュアル > ライブラリ一覧 > nkfライブラリ > NKFモジュール
クラスの継承リスト: NKF
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
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
Ruby 1.8.2 に添付されている NKF は Unicode 入力時の自動判定の精度が落ちています。 Ruby 1.8.3 以降にバージョンアップするか、 できるだけ明示的に文字コードを指定するようにしましょう。
| 定義 | 説明 | |
|---|---|---|
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 の文字コードを変換し、変換結果の文字列を返します。 |
|
| 定義 | 説明 | |
|---|---|---|
ASCII
|
ASCII コードを表します。 |
|
BINARY
|
入力が binary であることを表します。 |
|
EUC
|
EUC コードを表します。 |
|
JIS
|
JIS コードを表します。 |
|
SJIS
|
SJIS コードを表します。 |
|
UNKNOWN
|
コード判定に失敗したことを表します。 |
|
UTF16
|
UTF-16 コードを表します。 |
|
UTF8
|
UTF-8 コードを表します。 |
|