この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 |
訳文
原文
|
NormalizationForm 列挙体
実行する正規化のタイプを定義します。
アセンブリ: mscorlib (mscorlib.dll 内)
一部の 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 */
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 システム要件」を参照してください。
