我有来自unicode数据库的这些值,但我不确定如何将它们转换为人类可读的形式。这些到底叫什么呢?
下面是它们:
U+2B71F
U+2A52D
U+2A68F
U+2A690
U+2B72F
U+2B4F7
U+2B72B
如何将这些转换成可读的符号?
发布于 2011-08-08 07:52:57
这样如何:
# Using pack
puts ["2B71F".hex].pack("U")
# Using chr
puts (0x2B71F).chr(Encoding::UTF_8)
在Ruby 1.9+中,你还可以这样做:
puts "\u{2B71F}"
即\u{}
转义序列可用于解码Unicode码点。
发布于 2011-08-08 07:54:21
像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")
参考文献:
https://stackoverflow.com/questions/6976524
复制相似问题