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