無指定の場合は対象文字列の encoding と同じだとみなす

irb1.9> p "しふとじす".encode('Shift_JIS').split(//)
["??", "??", "??", "??", "??"]
irb1.9> p "しふとじす".encode('Shift_JIS').split(//).map{|e| e.encode('UTF-8')}
["し", "ふ", "と", "じ", "す"]

split(//n) と同じことをするのはやや手間

irb1.9> p "しふとじす".encode('Shift_JIS').dup.force_encoding('BINARY').split(//)
["\x82", "\xB5", "\x82", "\xD3", "\x82", "\xC6", "\x82", "\xB6", "\x82", "\xB7"]

each_byte の結果を文字列にしたほうがたぶん妥当
あるいはなんか凄い人が凄い簡単な手法見せてくれるかもしれない