Perl Unicode 美食书:Unicode 规范化

℞ 27: Unicode 规范化

处方一提醒您在应用程序的边界处始终分解和重新组合 Unicode 数据。[a href="/pub/2012/04/perl-unicode-cookbook-always-decompose-and-recompose.html">始终分解和重新组合 Unicode 数据。 [a href="https://metacpan.org/pod/Unicode::Normalize">Unicode::Normalize 可以为您做更多。它支持多种 Unicode 规范化形式

规范化,当然,将任意形式的 Unicode 数据规范化为标准表示。 (如果复合字符由多个字符组成,规范化分解将按规范顺序排列这些字符。规范化组合在可能的情况下将它们组合成单个复合字符。没有这种规范化,您可以想象确定一个字符串是否与另一个字符串逻辑上等效有多难。)

通常,您应该在输入时将数据渲染为 NFD(规范分解形式),在输出时为 NFC(规范分解后跟规范组合)。使用 NFKC 或 NFKD 函数可以提高搜索的召回率,前提是您已经对要搜索的文本进行了相同的规范化。

请注意,这种规范化不仅涉及拆分或连接预组合兼容符号;它还根据它们的规范组合类别重新排列标记,并清除单例。

 use Unicode::Normalize;
 my $nfd  = NFD($orig);
 my $nfc  = NFC($orig);
 my $nfkd = NFKD($orig);
 my $nfkc = NFKC($orig);

上一页:℞ 26: 自定义字符属性

系列索引:标准序言

下一页:℞ 28: 转换非 ASCII Unicode 数字

标签

反馈

这篇文章有什么问题吗?请在 GitHub 上通过打开一个问题或拉取请求来帮助我们 GitHub