KONISHI Hiromasaです。

require 'jcode'
の1行は入ってますよね?
あと、入力文字列の漢字コードはなんでしょうか?

下みたいなコードはどうでしょう?
#ここから
require 'jcode'
require 'nkf'

sample = "Apple&−+.% (Orange%)! りんご オレンジ"

module ZenHan
  def zen_alpha_to_han( st )
    $KCODE = "sjis"
    NKF::nkf( "-s", st ).tr( "A-Za-z0-9", "A-Za-z0-9" ).tr( 
                              "%()! .,&─+", "%\(\)! \.,&\-+" )
  end
  module_function :zen_alpha_to_han
end

print ZenHan::zen_alpha_to_han( sample )

#ここまで