NKF

nkf(1)[外部] (Network Kanji code conversion Filter version 1.7)を ruby から使うためのモジュールです。

使い方:

以下は、漢字コード変換コマンドの例です。

#!/usr/local/bin/ruby

require 'nkf'

opt = ''
opt = ARGV.shift if ARGV[0][0] == ?-

while line = ARGF.gets
  print NKF.nkf(opt, line)
end

以下は、漢字コード判別コマンドの例です。

#!/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.nkf(opt, str)

文字列 str の文字コードを変換し、変換結果の文字列を返します。

opt には、 nkf(1)[外部] と同じコマンドラインオプションを指定します。複数指定する場合は、 NKF.nkf('-Se', str)NKF.nkf('-S -e', str) などとし ます。optは、必ず '-' で始めなければいけないことに注意 してください

注意

このメソッドは(nkf コマンドがそうであるように)、MIME Base64 の デコード処理がデフォルトでオンになっています。この動作を無効にしたけ れば opt に '-m0' を含めるようにしてください。

NKF.guess(str)

文字列 str の漢字コードを判別して返します。 返される値は、NKF モジュールのモジュール定数です(下記参照)。

定数

NKF::JIS

JISコードを表します。

NKF::EUC

EUCコードを表します。

NKF::SJIS

SJISコードを表します。

NKF::BINARY

入力が binary であることを表します。

NKF::UNKNOWN

コード判定に失敗したことを表します。 入力が ASCII 文字列でもこの値になります。