В Ruby 1.9 (и 1.8.7) вы можете использовать each_char, чтобы надежно перебирать символы строки, включая правильную обработку многобайтовых символов и прочего. В более ранних выпусках each_char не существует, и при индексировании будут возвращаться байтовые коды, а не одиночные строки символов. В этом случае вы можете использовать
"abcdefg".split(//u)
, которая будет разбивать строку с учетом UTF-8.
Здесь есть хорошее обсуждение здесь .