NormalizationForm 列挙体
アセンブリ: mscorlib (mscorlib.dll 内)

<ComVisibleAttribute(True)> _ Public Enumeration NormalizationForm

メンバ名 | 説明 | |
---|---|---|
FormC | 完全標準分解を使用して Unicode 文字列を正規化した後、可能な場合は、シーケンスを主要な複合文字で置換することを示します。 | |
FormD | 完全標準分解を使用して Unicode 文字列を正規化することを示します。 | |
FormKC | 完全互換分解を使用して Unicode 文字列を正規化した後、可能な場合は、シーケンスを主要な複合文字で置換することを示します。 | |
FormKD | 完全互換分解を使用して Unicode 文字列を正規化することを示します。 |

一部の Unicode シーケンスは、同じ文字を表しているために、同一であると見なされます。たとえば、次のシーケンスはいずれも "ắ" を表しているため、同一であると見なされます。
-
"\u1EAF"
-
"\u0103\u0301"
-
"\u0061\u0306\u0301"
しかし、これらのシーケンスには異なる Unicode コード値が含まれているため、序数比較 (バイナリ比較) では別のものと見なされます。このため、序数比較を実行する前に、これらの文字列を正規化 (基本要素に分解) する必要があります。
Unicode の各複合文字は、1 つ以上の文字で構成されるより基本的なシーケンスに割り当てられています。分解プロセスでは、文字列に含まれる複合文字を、より基本的な割り当てで置き換えます。完全分解とは、文字列に含まれる文字をそれ以上分解できなくなるまで、この置き換えを再帰的に実行することを指します。
Unicode には、互換分解と標準分解という 2 つのタイプの分解があります。互換分解では、書式情報が失われる場合があります。一方、互換分解のサブセットである標準分解では、書式情報が保持されます。
2 つの文字セットを完全標準分解した結果が同じである場合、これらの文字セットは標準等価性があると見なされます。同様に、2 つの文字セットを完全互換分解した結果が同じである場合、これらの文字セットは互換等価性があると見なされます。
正規化、分解、および等価性の詳細については、www.unicode.org の「The Unicode Standard」を参照してください。

次のコード例では、異なる正規化方式を使用して、エンコーディングを常に正規化するかどうかを指定しています。
Imports System Imports System.Text Public Class SamplesASCIIEncoding Public Shared Sub 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()) End Sub 'Main Public Shared Sub PrintNormalization(enc As Encoding) 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)) End Sub 'PrintNormalization End Class 'SamplesASCIIEncoding '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
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 */
using namespace System; using namespace System::Text; void PrintNormalization( Encoding^ enc ); int main() { // Display the value of IsAlwaysNormalized for every normalization form. Console::WriteLine( "{0,30} FormC FormKC FormD FormKD", "" ); PrintNormalization( gcnew UTF32Encoding( true,true,true ) ); PrintNormalization( gcnew UnicodeEncoding( true,true,true ) ); PrintNormalization( gcnew UTF8Encoding( true,true ) ); PrintNormalization( gcnew UTF7Encoding( true ) ); PrintNormalization( gcnew ASCIIEncoding ); } void PrintNormalization( Encoding^ enc ) { Console::Write( "{0,-30} ", enc ); 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 */
import System.*; import System.Text.*; public class SamplesASCIIEncoding { public static void main(String[] args) { // 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()); } //main public static void PrintNormalization(Encoding enc) { Console.Write("{0,-30} ", enc.ToString()); Console.Write("{0,-8}", System.Convert.ToString(enc.IsAlwaysNormalized(NormalizationForm.FormC))); Console.Write("{0,-8}", System.Convert.ToString(enc.IsAlwaysNormalized(NormalizationForm.FormKC))); Console.Write("{0,-8}", System.Convert.ToString(enc.IsAlwaysNormalized(NormalizationForm.FormD))); Console.WriteLine("{0,-8}", System.Convert.ToString(enc.IsAlwaysNormalized(NormalizationForm.FormKD))); } //PrintNormalization } //SamplesASCIIEncoding /* 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 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からNormalizationForm 列挙体を検索する場合は、下記のリンクをクリックしてください。

- NormalizationForm 列挙体のページへのリンク