我从unicode数据库获取这些值,但我不确定如何将它们转换为人类可读的形式。这甚至叫什么?
他们是:
U+2B71F
U+2A52D
U+2A68F
U+2A690
U+2B72F
U+2B4F7
U+2B72B
如何将这些转换为可读符号?
答案 0 :(得分:34)
怎么样:
puts ["2B71F".hex].pack("U")
修改强>
在Ruby 1.9中,您甚至可以这样做:
puts "\u{2B71F}"
即。 \u{}
转义序列可用于解码Unicode代码点。
答案 1 :(得分:19)
像U+2B71F
这样的unicode符号被称为codepoint
。
unicode系统为众多世界语言,科学符号,货币等中的每个字符定义唯一codepoint
。此字符集正在稳步增长。
例如,U+221E
是无穷大。
codepoints
是十六进制数字。每个字符始终只有一个数字。
有很多方法可以在内存中安排这个。这被称为encoding
,其常见的是UTF-8
和UTF-16
。转换来回定义明确。
在这里,您很可能希望将unicode codepoint
转换为UTF-8
个字符。
codepoint = "U+2B71F"
您需要提取U+
之后的十六进制部分,并仅获取2B71F
。这将是第一次集体捕获。 See this
codepoint.to_s =~ /U\+([0-9a-fA-F]{4,5}|10[0-9a-fA-F]{4})$/
你是UTF-8角色:
utf_8_character = [$1.hex].pack("U")
参考文献: