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::JISJISコードを表します。
NKF::EUCEUCコードを表します。
NKF::SJISSJISコードを表します。
NKF::BINARY入力が binary であることを表します。
NKF::UNKNOWNコード判定に失敗したことを表します。 入力が ASCII 文字列でもこの値になります。