我想创建Unicode字符到字符[a-z]和[0-9]的双向映射。我想过为 {使用像 Left Curly Bracket 这样的Unicode字符名称。遗憾的是,我找不到所有UTF-8字符的列表,其中的字符描述已准备好在Ruby中访问。 Wikipedia contains a list of Unicode characters并且有一个Unicode name list by the Unicode Consortium。在我开始为列表编写解析器之前,我想问:
答案 0 :(得分:2)
您可以尝试unicode utils gem
require "unicode_utils/char_name"
UnicodeUtils.char_name "ᾀ" => "GREEK SMALL LETTER ALPHA .."
对于替代方案,请在The Ruby Toolbox中查找“unicode ..”
unicode宝石看起来很有希望
Unicode::decompose(str)
答案 1 :(得分:1)
uniscribe gem执行您要求的操作,它适用于当前Unicode版本的数据。从Ruby,您可以像这样使用它:
require "uniscribe/kernel_method"
uniscribe " "
将产生以下输出:
1D578 ├─ ├─ MATHEMATICAL BOLD FRAKTUR CAPITAL M
1D58E ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL I
1D598 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL S
1D588 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL C
0020 ├─ ] [ ├─ SPACE
1D580 ├─ ├─ MATHEMATICAL BOLD FRAKTUR CAPITAL U
1D593 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL N
1D58E ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL I
1D588 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL C
1D594 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL O
1D589 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL D
1D58A ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL E
0020 ├─ ] [ ├─ SPACE
1D56E ├─ ├─ MATHEMATICAL BOLD FRAKTUR CAPITAL C
1D58D ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL H
1D586 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL A
1D597 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL R
1D586 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL A
1D588 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL C
1D599 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL T
1D58A ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL E
1D597 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL R
1D598 ├─ ├─ MATHEMATICAL BOLD FRAKTUR SMALL S
在幕后,它使用了unicode-name和unicode-sequence_name,也可以直接使用。
答案 2 :(得分:0)
根据the suggestion中的ovhaag使用the Unicode Utils gem,我提出了以下适用于我的解决方案:
require 'unicode_utils'
string = %Q|Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!|
mapping = string.chars.collect {|c| UnicodeUtils.char_name(c).downcase}
name_to_byte = UnicodeUtils::NAME_MAP.invert
bytes = mapping.collect {|c| name_to_byte[c.upcase]}
new_string = bytes.pack('U*')
string==new_string