toNFKC

toNFKC

[1] NFKC (正規化形 (せいきかけい) (normalization form) KC) は、Unicode文字列正規形の1つです。

NFKC は、大まかには、互換分解を行った後に正準結合を行います。 (NFC正準分解を行いますが、 NFKC は互換分解を行います。 NFC も NFKC も、 分解の後には正準結合を行います。 (「互換結合」はありません。))

仕様書

定義

[2] 詳しい定義はこうです。 (実装はこれと同じ結果が得られるなら、他の方法を使ってもかまいません。)

  1. 原始文字列S互換分解を、 実装が対応している最新版の UCD互換写像に従って生成する。
  2. 分解中の最初から最後までのそれぞれの文字 C について、次の操作を繰り返す。
    1. C が最後の開始子 L から妨害されておらず、 L初等結合できるなら、 L を合成 L-C で置換し、 C を削除する。
  3. これによって得られた文字列 S'SNFKC である。

変種

[5] UAX #31: Unicode Identifier and Pattern Syntax ( 版) http://www.unicode.org/reports/tr31/#NFKC_Modifications

[6] UAX #31: Unicode Identifier and Pattern Syntax ( ( 版)) http://www.unicode.org/reports/tr31/#NFKC_Modifications

[4] XRI Syntax Specification ( 版) http://docs.oasis-open.org/xri/xri-syntax/2.0/specs/cs01/xri-syntax-V2.0-cs.html

This encoding in UTF-8 MUST include normalization according to Normalization Form KC (NFKC) as defined in [UTR15].

[7] RFC 7564 - PRECIS Framework: Preparation, Enforcement, and Comparison of Internationalized Strings in Application Protocols ( 版) https://tools.ietf.org/html/rfc7564#section-9.17

[8] KS X 1026-1

互換性

[10] NFKC を適用すると文字化けが起こることがあります。 情報交換では使ってはいけません。 Unicode正規化

応用

[9] Character Set, JTC1/SC22/WG9/ARG, by Randall Brukardt, ARG Editor, , https://www.adaic.org/resources/add_content/standards/05aarm/html/AA-2-1.html

[11] IDNA2008Unstable, PRECISHasCompat の規定にも使われています。

メモ