2012-06-28 1 views
1

Используя кодировку utf8, я знаюКак получить « u20ac» от € в Ruby?

a = "\u20ac" 

#=> "€" 

мне интересно, есть ли в любом случае, что повернуть вспять этот процесс, чтобы получить «\ u20ac» из строки €?

как

a.get_encoding_method 

#=> "\u20ac" 

ответ

2
escaped = '\u' + a.unpack('U')[0].to_s(16) 
+0

wow, работает как очарование! поэтому unpack ('U') возвращает десятичное представление utf8 a, а затем преобразует его в hex, не так ли? – mko

+0

Да - 'a.unpack ('U') [0]' дает код Unicode как целое число, и нам просто нужно преобразовать его в строку base-16. –

+0

спасибо, codepoint, это термин, который я хочу использовать в следующий раз, BTW String # codepoint может работать одинаково, но также требуется преобразовать в hex – mko

0

Попробуйте '\u%x' % a.ord. (предполагая, что вы хотите получить строку с буквальной обратной косой чертой и u).

0

Вы можете использовать пакет и распаковать для преобразования взад и вперед. Например:

'€'.unpack('U*') 
=> [8364] 

[8364].pack('U*') 
=> "€" 
Смежные вопросы