青山です。 On Tue, Jul 27, 1999 at 07:09:19AM +0900, Sinichiro Dezawa <dezawa / miya.fujifilm.co.jp> wrote: > ん?? > 例えば ミ(半角)が \xD0 のコードになってる。 ああ、なるほど。これの元を作った(使っていた)時は Mac だったのですが、 Mac が特殊だったようです。Mac ではフォント切替えで JIS ローマ字(7 bit code)を混ぜて扱う場合があるようです。 その時に1バイト系の文字コード表を元にして作ったのであのようになってし まっていたんですね。2バイト系では後半を分けずにそのままつなぐようです。 #!/usr/local/bin/ruby -Ks # スクリプトファイルも SJIS に require 'jcode' HanKana2ZenKana = {} a = "\xA1" "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜".split(//).each{|c| HanKana2ZenKana[a] = c; a.succ! } def hankana2zenkana!(string) string.gsub!(/./){|c| HanKana2ZenKana[c] or c } string.gsub!(/([カキクケコサシスセソタチツテトハヒフヘホ])゛/){|c| [c.unpack('n')[0] + 1].pack('n') } string.gsub!(/([ハヒフヘホ])゜/){|c| [c.unpack('n')[0] + 2].pack('n') } string.gsub!(/ウ゛/, 'ヴ') string end def hankana2zenkana(string) hankana2zenkana!(string.dup) end def kana2hira!(string) string.gsub!(/ヴ/, 'う゛') string.tr!('ァ-ン', 'ぁ-ん') string end def kana2hira(string) kana2hira!(string.dup) end while line = gets hankana2zenkana!(line) kana2hira!(line) print line end 新版の jcode.rb ならばこれでも十分ですが、より高速化したい場合は、 Kana2Hira = {} a = "ぁ" ("ァ" .. "ン").each{|c| Kana2Hira[c] = a.dup; a.succ! } def kana2hira!(string) string.gsub!(/[ァ-ン]/){|c| Kana2Hira[c] } string.gsub!(/ヴ/, 'う゛') string end -- 青山 和光 Wakou Aoyama <wakou / fsinet.or.jp>