Ruby преобразует шестнадцатеричный код в символ и печатает (иврит Unicode)

Здравствуйте, я работаю над проектом, который требует анализа символов иврита.

у меня такой случай

letter = case

         when (a[0] == "1") && (a[1] == "2"): "He ה"
         ...
         end

p letter 

=> "He ה"

Я также хочу напечатать символ иврита из шестнадцатеричного числа Unicode (для He 05D4), например:

letter = case
         when (a[0] == "1") && (a[1] == "2"): "\05D4 He ה" 
         ...
         end

p letter 

Desired output => "ה He ה"
Actual output => "\005D4 He ה"

Руби 1.8.8. $KCODE = "u" устанавливается выше кода.

Что мне нужно сделать? Я пробовал несколько разных вещей, но безрезультатно (например, ['05D5'.hex].pack("C") ) => error char вне допустимого диапазона

Заранее спасибо.


person netefficacy    schedule 15.01.2011    source источник


Ответы (1)


Единственная проблема - это ваш отладочный код. Kernel#p пишет object.inspect, и это, возможно, слишком усердно пытается показать вам внутреннюю структуру.

Просто используйте реальный метод ввода-вывода, такой как puts, и я думаю, все будет в порядке.

person DigitalRoss    schedule 15.01.2011
comment
Спасибо. Я использовал puts, и теперь на выходе получается D4 He ה. Ааааааааааааааааааааа - person netefficacy; 16.01.2011