Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年9月.
normalize() は String 値のメソッドで、この文字列の Unicode 正規化形式を返します。
Unicode 正規化形式を示す "NFC", "NFD", "NFKC", "NFKD" のうちの一つです。省略されたり undefined であったりした場合は "NFC" が使われます。
これらの値には以下の意味があります。
"NFC"正規化形式 C。正準等価性によって分解され、再度合成される。
"NFD"正規化形式 D。正準等価性によって分解される。
"NFKC"正規化形式 KC。互換等価性によって分解され、正準等価性によって再度合成される。
"NFKD"正規化形式 KD。互換等価性によって分解される。
与えられた文字列の Unicode 正規化形式を含む文字列です。
form が上記で指定された値のいずれでもない場合に発生します。
Unicode は個々の文字に対して、「コードポイント」と呼ばれる固有の値を割り当てています。例えば、 "A" のコードポイントは U+0041 が割り当てられています。しかし、複数のコードポイントや、コードポイントの一連の並びが、同一の抽象文字を表すことがあります。 — 例えば、"ñ" の文字は以下のいずれかで表すことができます。
しかし、コードポイントが異なるため、文字列の比較ではこれらが同じものとして扱われません。また、それぞれのコードポイントの数が異なるため、長さすら異なります。
normalize() メソッドは、同じ文字を表すコードポイントのすべての並びを共通の正規化された形式に文字列を変換することで、この問題を解決するのに役立ちます。正規化の方法は主に 2 つがあり、1 つは正準等価性に、もう 1 つは互換等価性に基づきます。
Unicode では、2 つのコードポイントの並びが同じ抽象文字を表していれば、正準等価性があるとされ、常に同じ外見表示と動作をするべきです(例えば、並べ替えで常に同じものとして扱うべきです)。
normalize() を "NFD" または "NFC" の引数で使用することで、すべてが正準等価な文字列となる文字列の形を生成することができます。以下の例では、文字 "ñ" の二つの表現を正規化しています。
"NFD" で正規化された形の長さが 2 であることに注意してください。"NFD" は分解正規形を生成するからであり、これは単一のコードポイントを複数のコードポイントの組み合わせに分解します。 "ñ" の分解正規形は "\u006E\u0303" です。
"NFC" を指定すると合成正規形を取得することができ、これは複数のコードポイントを可能な限り単一のコードポイントで置き換えます。 "ñ" の合成正規形は "\u00F1" です。
Unicode では、2 つのコードポイントの並びが、同じ抽象文字を表す場合に互換性があり、場合によっては同じ文字として扱われるべきですが、すべてのアプリケーションでそうするべきとは限らないことがあります。
すべての正準等価な並びは互換といえますが、逆はそうとはいえません。
例を挙げます。
場面によっては(並べ替えなど)同じものとしてみなされるべきであり、その他の場合は(外見など)同じとするべきではないので、これらは厳密には等しくありません。
normalize() を "NFKD" または "NFKC" を引数にして使用することで、互換等価な文字列が同じになる形の文字列を生成することができます。
互換等価な正規化を適用する際には、正規化された形式がすべてのアプリケーションに適しているとは限らないので、文字列で何をしようとしているのかを考慮することが重要です。上の例では、ユーザーが "f" を検索すれば文字列を見つけることができるので、正規化は検索に適しています。しかし、視覚的な表現が異なるため、表示には適切ではないかもしれません。
正準等価な正規化のように、分解形または合成形の互換等価形式は、それぞれ "NFKD" または "NFKC" を渡すことで問い合わせることができます。
| ECMAScript® 2027 Language Specification # sec-string.prototype.normalize |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年8月22日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.