Ruby 如何获得\u20ac“;来自€;用红宝石?

Ruby 如何获得\u20ac“;来自€;用红宝石?,ruby,string,encoding,Ruby,String,Encoding,使用utf8编码,我知道 a = "\u20ac" #=> "€" 我想知道是否有相反的过程从字符串€中获取“\u20ac” 像 请尝试'\u%x'%a.ord。(假设您希望以一个带有文字反斜杠和u)的字符串结尾。您可以使用“打包”和“解包”来回转换。例如: '€'.unpack('U*') => [8364] [8364].pack('U*') => "€" 哇,很有魅力!所以unpack('U')返回a的十进制utf8表示,然后将其转换为十六进制,不是吗?是的-a.

使用utf8编码,我知道

a = "\u20ac"

#=> "€"
我想知道是否有相反的过程从字符串€中获取“\u20ac”


请尝试
'\u%x'%a.ord
。(假设您希望以一个带有文字反斜杠和
u
)的字符串结尾。

您可以使用“打包”和“解包”来回转换。例如:

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

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

哇,很有魅力!所以unpack('U')返回a的十进制utf8表示,然后将其转换为十六进制,不是吗?是的-
a.unpack('U')[0]
将Unicode码点作为整数,我们只需要将其转换为base-16字符串。谢谢,码点,这是我下次要使用的术语,顺便说一句,字符串#码点可能也有同样的作用,但也需要转换成十六进制
escaped = '\u' + a.unpack('U')[0].to_s(16)
'€'.unpack('U*')
=> [8364]

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