某些字符,例如Unicode字符'LATIN SMALL LETTER C WITH CARON'可以编码为0xC4 0x8D,但也可以用"LATIN SMALL LETTER C"和"COMBINING CARON"的两个代码点表示,即0x63 0xcc 0x8c.
更多信息:http://www.fileformat.info/info/unicode/char/10d/index.htm
我想知道是否有一个库可以将"拉丁文小写字母C"+"组合卡伦"转换为"拉丁文小写字母C卡通".或者是否有包含这些转换的表格?
这些转换并不总是存在.U + 0063(c)与U + 030C(组合抑扬符)的组合可以表示为一个单独的字符,例如,但有表示与卡伦(W)小写字母"W"没有预组合字符.
然而,存在可以在可能的情况下执行该组合的库.寻找名为"NFC"的Unicode函数(规范化形式:组合).例如,参见:http://unicode-utils.rubyforge.org/classes/UnicodeUtils.html#M000015
通常,您使用Unicode标准化来执行此操作.
使用gem unicode_utils(http://unicode-utils.rubyforge.org/)使用UnicodeUtils.nfkc 可以获得您要求的特定行为; unicode规范化形式kC将使用兼容性分解,然后将字符串转换为组合形式(如果可用)(基本上是您的示例所要求的).(您也可以通过规范化形式c接近您想要的,有时缩写为NFC).
如何在Ruby 1.9上替换Unicode gem?有其他细节.
在Ruby 1.8.7中,您需要执行gem install Unicode,其中有类似的功能可用.
编辑添加:你可能想要从kC而不是仅仅归一化形式C的规范化的主要原因是连字(由于历史/印刷原因而挤压在一起的字符)将首先被分解为单个字符,这有时是可取的如果您正在进行词典排序或搜索).
| 归档时间: |
|
| 查看次数: |
3357 次 |
| 最近记录: |