31 января 2009

Escaping Unicode in Ruby

Ещё одна крупица мудрости и благодати позволит преобразовывать non-ASCII символы в строке в их экранированный Unicode эквивалент вроде \u0444:

1 class String
2   def escape_unicode
3     unpack('U*').map {|c| c < 0x80 ? c.chr : '\u%04x' % c}.join
4   end
5 end


>> puts "фывыфdd".escape_unicode
\u0444\u044b\u0432\u044b\u0444dd

Работает и в 1.8 и в 1.9.
Воистину, Ruby велик и Hal Fulton его пророк.
По мотивам одного перлового модуля. Короче в 5 раз.

Комментариев нет: