This is a Unicode problem. The string you use contains characters outside the ASCII range, and the commonly used UTF-8 encoding encodes them as 2 (or more) bytes.
Ruby 1.8 did not handle Unicode correctly, and length simply indicates the number of bytes in the string, which leads to funny things like:
"Δ
".length => 2
Ruby 1.9 has improved Unicode processing. This includes length returns the actual number of characters in the string if Ruby knows the encoding:
"Γ€".length => 1
One possible Ruby 1.8 solution uses regular expressions that can be done in Unicode:
"Δ
".scan(/./mu).size => 1
source share