首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将unicode代码点转换为Ruby中的字符串字符

将unicode代码点转换为Ruby中的字符串字符
EN

Stack Overflow用户
提问于 2011-08-08 07:30:00
回答 2查看 15.9K关注 0票数 19

我有来自unicode数据库的这些值,但我不确定如何将它们转换为人类可读的形式。这些到底叫什么呢?

下面是它们:

  • U+2B71F
  • U+2A52D
  • U+2A68F
  • U+2A690
  • U+2B72F
  • U+2B4F7
  • U+2B72B

如何将这些转换成可读的符号?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-08 07:52:57

这样如何:

代码语言:javascript
复制
# Using pack
puts ["2B71F".hex].pack("U")

# Using chr
puts (0x2B71F).chr(Encoding::UTF_8)

在Ruby 1.9+中,你还可以这样做:

代码语言:javascript
复制
puts "\u{2B71F}"

\u{}转义序列可用于解码Unicode码点。

票数 36
EN

Stack Overflow用户

发布于 2011-08-08 07:54:21

U+2B71F这样的unicode符号被称为codepoint

unicode系统为多种世界语言、科学符号、货币等中的每个字符定义了唯一的codepoint

例如,U+221E是无穷大。

codepoints是十六进制数字。每个字符总是恰好定义一个数字。

有许多方法可以在内存中安排这一点。这被称为encoding,其中常见的是UTF-8UTF-16。来回转换是很好定义的。

在这里,您很可能正在寻找将unicode codepoint转换为UTF-8字符。

代码语言:javascript
复制
codepoint = "U+2B71F"

您需要提取U+之后的十六进制部分,并且只获取2B71F。这将是第一次组捕获。See this

代码语言:javascript
复制
codepoint.to_s =~ /U\+([0-9a-fA-F]{4,5}|10[0-9a-fA-F]{4})$/

你的UTF-8字符将是:

代码语言:javascript
复制
utf_8_character = [$1.hex].pack("U")

参考文献:

  1. Convert Unicode codepoints to UTF-8 characters with Module#const_missing.
  2. Tim Bray on the goodness of unicode.
  3. Joel Spolsky - The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!).
  4. Dissecting the Unicode regular expression
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6976524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档