次の方法で共有


カスタムの大文字と小文字の対応規則および並べ替え規則

大文字と小文字の対応、アルファベットの順序、および項目の並べ替えの規則は、カルチャによって異なります。これらの相違点を認識し、文字列操作の結果がカルチャによって異なる可能性があることを理解しておく必要があります。

トルコ語のアルファベットに固有の大文字と小文字の対応規則は、言語によっては大文字と小文字の対応が一部異なる例を示しています。多くのラテン アルファベットでは、文字 i (Unicode 0069) は文字 I (Unicode 0049) の小文字です。しかし、トルコ語のアルファベットでは文字 I に 2 つのバージョンがあります。一方には点が付き、もう一方には点が付きません。トルコ語では、文字 I (Unicode 0049) は別の文字 ı (Unicode 0131) の大文字と見なされます。文字 i (Unicode 0069) は別の文字 İ (Unicode 0130) の小文字であると見なされます。このため、大文字と小文字を区別せずに、文字 i (Unicode 0069) と I (Unicode 0049) の文字列を比較した場合、多くのカルチャでは成功しますが、カルチャ "tr-TR" (トルコのトルコ語) では失敗します。

文字列 "FILE" と "file" に対し、大文字小文字を区別しない String.Compare 操作を実行したとき、カルチャによって結果がどのように異なるかを次のコード例で示します。Thread.CurrentCulture プロパティが "en-US" (米国の英語) に設定されている場合は、この比較操作によって true が返されます。CurrentCulture が "tr-TR" (トルコのトルコ語) に設定されている場合は、この比較によって false が返されます。

Imports System
Imports System.Globalization
Imports System.Threading

Public Class TurkishISample
    Public Shared Sub Main()
        ' Set the CurrentCulture property to English in the U.S.
        Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
        Console.WriteLine("Culture = {0}", _
            Thread.CurrentThread.CurrentCulture.DisplayName)
        Console.WriteLine("(file == FILE) = {0}", String.Compare("file", _
            "FILE", True) = 0)
        
        ' Set the CurrentCulture property to Turkish in Turkey.
        Thread.CurrentThread.CurrentCulture = New CultureInfo("tr-TR")
        Console.WriteLine("Culture = {0}", _
            Thread.CurrentThread.CurrentCulture.DisplayName)
        Console.WriteLine("(file == FILE) = {0}", String.Compare("file", _
            "FILE", True) = 0)
    End Sub
End Class
using System;
using System.Globalization;
using System.Threading;

public class TurkishISample
{
    public static void Main()
    {
    // Set the CurrentCulture property to English in the U.S.
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    Console.WriteLine("Culture = {0}",   
        Thread.CurrentThread.CurrentCulture.DisplayName);
    Console.WriteLine("(file == FILE) = {0}", (string.Compare("file", 
        "FILE", true) == 0));

    // Set the CurrentCulture property to Turkish in Turkey.
    Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
    Console.WriteLine("Culture = 
        {0}",Thread.CurrentThread.CurrentCulture.DisplayName);
    Console.WriteLine("(file == FILE) = {0}", (string.Compare("file", 
        "FILE", true) == 0));
    }
}

コンソールには次のように出力され、カルチャごとに結果が異なることがわかります。大文字と小文字を区別せずに i と I を比較した場合、"en-US" カルチャでは true になりますが、"tr-TR" カルチャでは false になるからです。

Culture = English (United States)
(file == FILE) = True
Culture = Turkish (Turkey)
(file == FILE) = False
Noteメモ :

カルチャ "az -AZ-Latn" (アゼルバイジャンのアゼリ語 (ラテン文字)) もこれと同じ大文字と小文字の対応規則を使用します。

その他のカスタムの大文字と小文字の対応規則および並べ替え規則

トルコ語やアゼリ語のアルファベットで使用される固有の大文字と小文字の対応以外にも、文字列操作を実行する際に注意が必要なカスタムの大文字と小文字の対応や並べ替えの規則があります。ASCII 範囲 (Unicode 0000- Unicode 007F) の 9 つのカルチャのアルファベットには、大文字と小文字が混在する場合に、String.Compare などの大文字と小文字を区別しない比較の結果が異なる 2 文字のペアが含まれています。このようなカルチャには、従来の並べ替え順序を使用する "hr-HR" (クロアチアのクロアチア語)、"cs-CZ" (チェコ共和国のチェコ語)、"sk-SK" (スロバキアのスロバキア語)、"da-DK" (デンマークのデンマーク語)、"nb-NO" (ノルウェーのノルウェー語 (ブークモール))、"nn-NO" (ノルウェーのノルウェー語 (ニーノシク))、"hu-HU" (ハンガリーのハンガリー語)、"vi-VN" (ベトナムのベトナム語)、および "es-ES" (スペインのスペイン語) があります。たとえば、デンマーク語では、2 文字のペア aA と AA を大文字と小文字を区別せずに比較した結果は同じであるとは見なされません。ベトナム語のアルファベットでは、2 文字のペア nG と NG を大文字と小文字を区別せずに比較した結果は同じであるとは見なされません。このような規則があることに注意する必要がありますが、実際には、カルチャを認識してこれらのペアを比較しても、通常、問題が発生することはありません。なぜなら、これらのペアが固定文字列や識別子で使用されることはほとんどないからです。

ASCII 範囲の 6 つのカルチャのアルファベットでは、大文字と小文字の区別の規則は同じですが、並べ替えの規則が異なります。このようなカルチャには、技術的な並べ替え順序を使用する "et-EE" (エストニアのエストニア語)、"fi-FI" (フィンランドのフィンランド語)、"hu-HU" (ハンガリーのハンガリー語) と、"lt-LT" (リトアニアのリトアニア語)、"sv-FI" (フィンランドのスウェーデン語)、および "sv-SE" (スウェーデンのスウェーデン語) があります。たとえば、スウェーデン語のアルファベットでは、文字 w は文字 v として並べ替えられます。アプリケーション コードでは、並べ替え操作は等値比較よりも使用頻度が低いので、問題が発生することはほとんどありません。

ASCII 範囲外のその他の 35 個のカルチャには、カスタムの大文字と小文字の対応規則および並べ替えの規則があります。これらの規則は、一般的に、特定のカルチャで使用されるアルファベットに限定されます。したがって、これらの規則が問題となる可能性は高くありません。

特定のカルチャに対応するカスタムの大文字と小文字の対応規則および並べ替えの規則の詳細については、「The Unicode Standard」 (www.unicode.org) を参照してください。

参照

概念

カルチャを認識しない文字列操作

その他の技術情報

カルチャを認識しない文字列操作の実行