В Ruby 1.9 это легко. В Ruby 1.9 строки представляют собой последовательности символов с кодировкой, так что вы можете просто проиндексировать их и получить из них односимвольную строку:
'µsec'[0] => 'µ'
Однако в Ruby 1.8 строки представляют собой последовательности байтов и, следовательно, совершенно не знают о кодировке. Если вы индексируете в строку, и эта строка использует многобайтовую кодировку, вы рискуете индексировать прямо в середину многобайтового символа (в этом примере «µ» кодируется в UTF-8):
'µsec'[0] # => 194
'µsec'[0].chr # => Garbage
'µsec'[0,1] # => Garbage
Однако Regexps и некоторые специализированные строковые методы поддерживают как минимум небольшое подмножество популярных кодировок, среди которых некоторые японские кодировки (например, Shift-JIS) и (в этом примере) UTF-8:
'µsec'.split('')[0] # => 'µ'
'µsec'.split(//u)[0] # => 'µ'