instance method String#unicode_normalize

unicode_normalize(form = :nfc) -> String[permalink][rdoc]

self を NFC、NFD、NFKC、NFKD のいずれかの正規化形式で Unicode 正規化した文字列を返します。

[PARAM] form:
正規化形式を :nfc、:nfd、:nfkc、:nfkd のいずれかで指定します。省略した場合は :nfc になります。
[EXCEPTION] Encoding::CompatibilityError:
self が Unicode 文字列ではない場合に発生します。

このメソッドでの "Unicode 文字列" とは、UTF-8、UTF-16BE/LE、 UTF-32BE/LE だけではなく GB18030、UCS_2BE、and UCS_4BE を含みます。

また、self が UTF-8 以外のエンコーディングであった場合は一度 UTF-8 に変換してから正規化されるため、UTF-8 よりも遅くなっています。



"a\u0300".unicode_normalize        # => 'à' ("\u00E0" と同じ)
"a\u0300".unicode_normalize(:nfc)  # => 'à' ("\u00E0" と同じ)
"\u00E0".unicode_normalize(:nfd)   # => 'à' ("a\u0300" と同じ)
"\xE0".force_encoding('ISO-8859-1').unicode_normalize(:nfd)
                                   # => Encoding::CompatibilityError raised

[SEE_ALSO] String#unicode_normalize!, String#unicode_normalized?