def hoge(buf)
sjis = Regexp...
jis = Regexp...

buf.each do |str|
if ($ja == 1) # 無駄なループを減らす
break
end
case str
when sjis, jis
$ja = 1
end
end

buf.each do |str|
if ($ja == 1)
str = NKF::nkf('-e', str)
end
なんとか
end

19は簡略化して書いたんですが、本当はこんな感じのことがやりたかったんです。
nkfがもの凄く重いので事前に日本語だとわかってるときだけ動いて欲しい。
上の日本語判定のところがどうにも無駄なような気がして