この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文
このトピックはまだ評価されていません このトピックを評価する

NormalizationForm 列挙体

実行する正規化のタイプを定義します。

名前空間:  System.Text
アセンブリ:  mscorlib (mscorlib.dll 内)
[ComVisibleAttribute(true)]
public enum NormalizationForm
メンバー名 説明
FormC 完全標準分解を使用して Unicode 文字列を正規化した後、可能な場合は、シーケンスを主要な複合文字で置換することを示します。
FormD 完全標準分解を使用して Unicode 文字列を正規化することを示します。
FormKC 完全互換分解を使用して Unicode 文字列を正規化した後、可能な場合は、シーケンスを主要な複合文字で置換することを示します。
FormKD 完全互換分解を使用して Unicode 文字列を正規化することを示します。

一部の Unicode シーケンスは、同じ文字を表しているために、同一であると見なされます。 たとえば、次のシーケンスはいずれも "ắ" を表しているため、同一であると見なされます。

  • "\u1EAF"

  • "\u0103\u0301"

  • "\u0061\u0306\u0301"

しかし、これらのシーケンスには異なる Unicode コード値が含まれているため、序数比較 (バイナリ比較) では別のものと見なされます。 このため、序数比較を実行する前に、アプリケーションでこれらの文字列を正規化して基本要素に分解する必要があります。

Unicode の各複合文字は、1 つ以上の文字で構成されるより基本的なシーケンスに割り当てられています。 分解プロセスでは、文字列に含まれる複合文字を、より基本的な割り当てで置き換えます。 完全分解とは、文字列に含まれる文字をそれ以上分解できなくなるまで、この置き換えを再帰的に実行することを指します。

Unicode には、互換分解と標準分解という 2 つのタイプの分解があります。 互換分解では、書式情報が失われる場合があります。 一方、互換分解のサブセットである標準分解では、書式情報が保持されます。

2 つの文字セットを完全標準分解した結果が同じである場合、これらの文字セットは標準等価性があると見なされます。 同様に、2 つの文字セットを完全互換分解した結果が同じである場合、これらの文字セットは互換等価性があると見なされます。

正規化、分解、および等価性の詳細については、Unicode Home Page の「The Unicode Standard」を参照してください。

次のコード例では、異なる正規化方式を使用して、エンコーディングを常に正規化するかどうかを指定しています。


using System;
using System.Text;

public class SamplesASCIIEncoding  {

   public static void Main()  {

      // Display the value of IsAlwaysNormalized for every normalization form.
      Console.WriteLine( "{0,30} FormC   FormKC  FormD   FormKD", "" );
      PrintNormalization( new UTF32Encoding( true, true, true ) );
      PrintNormalization( new UnicodeEncoding( true, true, true ) );
      PrintNormalization( new UTF8Encoding( true, true ) );
      PrintNormalization( new UTF7Encoding( true ) );
      PrintNormalization( new ASCIIEncoding() );

   }

   public static void PrintNormalization( Encoding enc )  {
      Console.Write( "{0,-30} ", enc.ToString() );
      Console.Write( "{0,-8}", enc.IsAlwaysNormalized( NormalizationForm.FormC ) );
      Console.Write( "{0,-8}", enc.IsAlwaysNormalized( NormalizationForm.FormKC ) );
      Console.Write( "{0,-8}", enc.IsAlwaysNormalized( NormalizationForm.FormD ) );
      Console.WriteLine( "{0,-8}", enc.IsAlwaysNormalized( NormalizationForm.FormKD ) );
   }


}


/* 
This code produces the following output.

                               FormC   FormKC  FormD   FormKD
System.Text.UTF32Encoding      False   False   False   False
System.Text.UnicodeEncoding    False   False   False   False
System.Text.UTF8Encoding       False   False   False   False
System.Text.UTF7Encoding       False   False   False   False
System.Text.ASCIIEncoding      True    True    True    True

*/



.NET Framework

サポート対象: 4、3.5、3.0、2.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
この情報は役に立ちましたか。
(残り 2000 文字)
コミュニティ コンテンツ 追加
注釈 FAQ