JavaTM Platform
Standard Ed. 6

java.text
クラス Normalizer

java.lang.Object
  上位を拡張 java.text.Normalizer

public final class Normalizer
extends Object

このクラスは、テキストのソートや検索が容易になるように Unicode テキストをそれと等価な合成形式または分解形式に変換する、normalize メソッドを提供します。normalize メソッドは、「Unicode Standard Annex #15 — Unicode Normalization Forms」に記述されている標準の正規化形式をサポートしています。

Unicode では、アクセントなどの修飾の付いた文字をいくつかの方法で符号化できます。文字 A-acute を例にとってみましょう。これは、Unicode では単一の文字 (合成形式) として符号化できます。  

      U+00C1    LATIN CAPITAL LETTER A WITH ACUTE

または、2 つの独立した文字 (分解形式) として符号化できます。  

      U+0041    LATIN CAPITAL LETTER A
      U+0301    COMBINING ACUTE ACCENT

ただし、プログラムのユーザーにとっては、どちらのシーケンスも、ユーザーレベルでは同じ文字「acute アクセント付きの A」として扱われるべきです。テキストの検索や比較を行うときに、これら 2 つのシーケンスが等価に扱われることを確認する必要があります。また、複数のアクセントを持つ文字も処理する必要があります。文字の結合アクセントの順序が重要になる場合もあれば、アクセントの順序が異なっても実際には等価になる場合もあります。

同様に、文字列「ffi」は、3 つの独立した文字として符号化できます。  

      U+0066    LATIN SMALL LETTER F
      U+0066    LATIN SMALL LETTER F
      U+0069    LATIN SMALL LETTER I

または、単一の文字として符号化できます。  

      U+FB03    LATIN SMALL LIGATURE FFI

合字 ffi は、区別可能な意味上の文字ではなく、厳密には Unicode に含まれるべきではありません。ただし、既存の文字セットですでに提供されているため、その互換性のために含まれています。Unicode 標準では、このような文字を、それに対応する意味上の文字に「互換」分解することによって識別します。検索や比較を行うとき、これらのマッピングを使用する必要がしばしば発生するでしょう。

上記の最初の例で示したように、normalize メソッドでテキストを正規合成形式または正規分解形式に変換すると、このような問題を解決するのに役立ちます。また、このメソッドで互換分解を実行して、互換文字をその等価な文字と同じものとして扱うこともできます。さらに、normalize メソッドはアクセントを適切な正規の順序に並べ替えるので、ユーザーがアクセントの並べ替えについて心配する必要はありません。

W3C では、NFC でテキストを交換するよう一般に推奨しています。また、従来の文字エンコーディングのほとんどは事前合成形式だけを使用し、それ自体では連結マークの符号化を行わない場合がよくあります。このような文字エンコーディングへの変換を行うには、Unicode テキストを NFC に正規化する必要があります。使用例については、「Unicode Standard Annex」を参照してください。

導入されたバージョン:
1.6

入れ子のクラスの概要
static class Normalizer.Form
          この列挙は、「Unicode Standard Annex #15 — Unicode Normalization Forms」に記述されている 4 つの Unicode 正規化形式の定数と、それらにアクセスするための 2 つのメソッドを提供します。
 
メソッドの概要
static boolean isNormalized(CharSequence src, Normalizer.Form form)
          指定された char 値のシーケンスが正規化されているかどうかを判定します。
static String normalize(CharSequence src, Normalizer.Form form)
          char 値のシーケンスを正規化します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

normalize

public static String normalize(CharSequence src,
                               Normalizer.Form form)
char 値のシーケンスを正規化します。シーケンスは、指定された正規化形式に従って正規化されます。

パラメータ:
src - 正規化する char 値のシーケンス
form - 次のいずれかの正規化形式。Normalizer.Form.NFCNormalizer.Form.NFDNormalizer.Form.NFKCNormalizer.Form.NFKD
戻り値:
正規化された文字列
例外:
NullPointerException - src または form が null の場合

isNormalized

public static boolean isNormalized(CharSequence src,
                                   Normalizer.Form form)
指定された char 値のシーケンスが正規化されているかどうかを判定します。

パラメータ:
src - チェック対象の char 値のシーケンス
form - 次のいずれかの正規化形式。Normalizer.Form.NFCNormalizer.Form.NFDNormalizer.Form.NFKCNormalizer.Form.NFKD
戻り値:
char 値のシーケンスが正規化されている場合は true、そうでない場合は false
例外:
NullPointerException - src または form が null の場合

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。