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 以降にバージョンアップするか、 できるだけ明示的に文字コードを指定するようにしましょう。

参考

モジュール関数

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 コードを表します。

Methods

Classes