2012-06-28 11 views
1

使用utf8編碼,我知道如何從Ruby中獲得「 u20ac」?

a = "\u20ac" 

#=> "€" 

我想知道在那裏反正扭轉這一過程從字符串€得到「\ u20ac」?

a.get_encoding_method 

#=> "\u20ac" 

回答

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

哇,作品像一個魅力!所以解壓縮('U')返回a的十進制utf8表示,然後將其轉換爲十六進制,不是嗎? – mko

+0

是 - 'a.unpack('U')[0]'給出的Unicode碼點是一個整數,我們只需要將它轉換爲一個基數爲16的字符串。 –

+0

感謝,codepoint,這是我想下一次使用的術語,BTW String#codepoint可能以相同的方式,但也需要轉換爲十六進制 – mko

0

嘗試'\u%x' % a.ord。 (假設你想結束一個帶有文字反斜槓和u的字符串)。

0

您可以使用pack和unpack來回轉換。例如:

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

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