Edit: sadly, it doesn't.
irb(main):001:0> RUBY_VERSION => "1.9.3" irb(main):002:0> Rails.version => "3.2.14" irb(main):003:0> # example 1 irb(main):004:0* example1 = "noe\u0308l".mb_chars => noël irb(main):005:0> example1.reverse => lëon irb(main):006:0> example1.compose.slice(0,3) => noë irb(main):007:0> example1.g_length #grapheme_length => 4 irb(main):008:0> example1.compose.length => 4 irb(main):009:0> # example 2 irb(main):010:0* example2 = "😸😾".mb_chars => 😸😾 irb(main):011:0> example2.length => 2 irb(main):012:0> example2.slice(1,1) => 😾 irb(main):013:0> example2.reverse => 😾😸 irb(main):014:0> # example 3 irb(main):015:0* example3 = "baffle".mb_chars => baffle irb(main):016:0> example3.upcase => BAfflE irb(main):017:0> # example 4 irb(main):018:0* example4 = "noël".mb_chars => noël irb(main):019:0> example4 == example1 => false irb(main):020:0> example4 == example1.compose => true
"noe\u0308l".size # => 5
You code is wrong
"noe\u{0308}" # => "noë"
Edit: sadly, it doesn't.