Compartilhar via


Personalizado caso mapeamentos e regras de classificação

caso mapeamentos, ordem alfabético e convenções para itens de seqüenciamento variam de cultura para cultura.Você deve estar atento essas variações e compreender que podem causar os resultados das operações de seqüência de caracteres para variar dependendo da cultura.

As regras de mapeamento de caso exclusivas para o alfabeto turco ilustram como letras maiúsculos e minúsculos mapeamentos são diferentes da linguagem para mesmo quando usarem a maioria das mesmas letras.Na maioria dos alfabetos latinos, o caractere "I" (Unicode 0069) é a versão em minúsculas do caractere "I" (Unicode 0049).No entanto, o alfabeto turco tem duas versões do caractere "I": uma com um ponto e sem um ponto.Em turco, o caractere "I" (Unicode 0049) é considerado a versão em maiúsculas de um diferente de caracteres "I" (0131 Unicode).O caractere "I" (Unicode 0069) é considerado a versão em minúsculas do outro caractere "İ" (0130 Unicode).sistema autônomo resultado, um caso - kana string comparação entre sistema autônomo caracteres "I" (Unicode 0069) e "I" (Unicode 0049) que tiver êxito para a maioria das culturas falhar para a cultura Turco (Turquia) designado "tr-TR".

Observação:

A cultura Azeri (Latina, Azerbaijão), designado "az-Latn-AZ", também usa esta regra de mapeamento de caso.

O exemplo de código a seguir demonstra como o resultado de um caso-kana Compare()operação executada em seqüências de caracteres "FILE" e "arquivo" difere dependendo do cultura. A comparação retorna true Se a CurrentCulturepropriedade é conjunto a cultura inglês (E.u.a.), designado "en-US". A comparação retorna false Se CurrentCultureé definido como Turco (Turquia) designado "tr-TR".

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));
    }
}

A saída a seguir ilustra como os resultados variam de acordo com a cultura, porque o caso-comparação entre maiúsculas e minúsculas "I" e "I" é avaliada comotruepara a cultura "en-US" e falsepara a cultura "tr-TR".

Culture = English (United States)
(file == FILE) = True
Culture = Turkish (Turkey)
(file == FILE) = False

Adicionais mapeamentos caso personalizada e regras de classificação

Juntamente com a exclusiva caso mapeamentos usados em alfabetos turco e Azeri, há Outros personalizado caso mapeamentos e regras de classificação que você deve conhecer ao considerar as operações em seqüência.Caracteres alfabéticos de nove culturas do intervalo ASCII (Unicode 0000 por meio do Unicode 007F) contém pares de duas letras para que o resultado de uma comparação não diferencia maiúsculas de minúsculas, por exemplo, usando Compare(), não é avaliada como iguais quando o caso for mixed. Essas culturas são:

  • Croata (Croácia), "hr-HR"

  • Tcheco (República Tcheca), "cs-CZ"

  • Eslovaco (Eslovênia), "sk-SK"

  • Dinamarquês (Dinamarca), "da-DK"

  • Norueguês (Bokmål, Noruega) "não nb"

  • Norueguês (Nynorsk, Noruega) "não nn"

  • Húngaro (Hungria), "hu-HU"

  • Vietnamita (Vietnã), "vi VN"

  • Espanhol (Espanha-tradicional), "es-ES_tradnl"

Por exemplo, no linguagem dinamarquês, um caso - pares de diferenciação de comparação de duas letras "suavização" e "suavização" não é considerada igual.Alfabeto vietnamita, um caso - pares de diferenciação de comparação de duas letras "ção" e "NG" não é considerado igual.Embora você deve estar ciente de que essas regras estão, na prática, é incomum ser executado em uma situação onde uma comparação entre sensíveis à cultura esses pares cria problemas, como são incomuns em seqüências de caracteres fixas ou identificadores.

Caracteres alfabéticos de seis culturas dentro do intervalo ASCII têm regras padrão de maiúsculas e minúsculas, mas diferentes regras de classificação.Essas culturas são:

  • Estoniano (Estônia), "et EE"

  • Finlandês (Finlândia), "fi-FI"

  • Húngaro (Hungria, ordem de classificar técnica), "hu HU_technl"

  • Lituano (Lituânia), "lt LT"

  • Sueco (Finlândia), "VA-FI"

  • Sueco (Suécia), "VA-SE"

Por exemplo, o alfabeto sueco, a letra "w" classifica sistema autônomo se fosse a letra "v".No código de aplicativo, operações de classificação tendem a ser usado com freqüência menor do que comparações de igualdade e, portanto, têm menor probabilidade de criar problemas.

Um culturas 35 adicionais tem personalizado caso mapeamentos e regras de classificação fora do intervalo ASCII.Essas regras são geralmente confinadas alfabetos usados pelo culturas específicas.Portanto, a probabilidade que causará problemas é baixa.

Para obter detalhes sobre o custom caso mapeamentos e regras de classificação que se aplicam a culturas específicas, consulte The Unicode Standard no residência do Unicode.

Consulte também

Conceitos

Diferenciação de cultura operações de string

Outros recursos

Executando operações diferenciação de cultura de string