Partilhar via


Localidades e páginas de código

Um ID de localidade reflete as convenções locais e o idioma de uma região geográfica específica. Uma determinada língua pode ser falada em mais do que um país/região; por exemplo, o português é falado tanto no Brasil como em Portugal. Inversamente, um país/região pode ter mais do que uma língua oficial. Por exemplo, o Canadá tem duas línguas: inglês e francês. Assim, o Canadá tem duas regiões distintas: Canadian-English e canadiano-francês. Algumas categorias dependentes da localidade incluem a formatação de datas e o formato de exibição para valores monetários.

O idioma determina as convenções de formatação de texto e dados, enquanto o país/região determina as convenções locais. Cada idioma tem um mapeamento único, representado por páginas de código, que inclui caracteres diferentes dos do alfabeto (como sinais de pontuação e números). Uma página de código é um conjunto de caracteres e está relacionada ao idioma. Como tal, uma localidade é uma combinação única de idioma, país/região e página de código. A configuração de localidade e página de código pode ser alterada em tempo de execução chamando a função setlocale .

Idiomas diferentes podem usar páginas de código diferentes. Por exemplo, a página de código ANSI 1252 é usada para inglês e a maioria dos idiomas europeus, e a página de código ANSI 932 é usada para Kanji japonês. Praticamente todas as páginas de código compartilham o conjunto de caracteres ASCII para os 128 caracteres mais baixos (0x00 a 0x7F).

Qualquer página de código de byte único pode ser representada em uma tabela (com 256 entradas) como um mapeamento de valores de byte para caracteres (incluindo números e sinais de pontuação) ou glifos. Qualquer página de código multibyte também pode ser representada como uma tabela muito grande (com 64K entradas) de valores de dois bytes para caracteres. Na prática, no entanto, é geralmente representado como uma tabela para os primeiros 256 caracteres (byte único) e como intervalos para os valores de byte duplo.

Para obter mais informações sobre páginas de código, consulte Páginas de código.

A biblioteca de tempo de execução C tem dois tipos de páginas de código internas: localidade e multibyte. Você pode alterar a página de código atual durante a execução do programa (consulte a documentação para as funções setlocale e _setmbcp ). Além disso, a biblioteca de tempo de execução pode obter e usar o valor da página de código do sistema operacional, que é constante durante a execução do programa.

Quando a página de código de localidade muda, o comportamento do conjunto de funções dependente de localidade muda para o ditado pela página de código escolhida. Por padrão, todas as funções dependentes de localidade começam a execução com uma página de código de localidade exclusiva para a localidade "C". Você pode alterar a página de código de localidade interna (bem como outras propriedades específicas de localidade) chamando a setlocale função. Uma chamada para setlocale(LC_ALL, "") define a localidade como a indicada pela localidade do usuário do sistema operacional.

Da mesma forma, quando a página de código multibyte muda, o comportamento das funções multibyte muda conforme determinado pela página de código escolhida. Por padrão, todas as funções multibyte começam a execução com uma página de código multibyte correspondente à página de código padrão do sistema operacional. Você pode alterar a página de código multibyte interna chamando a função _setmbcp.

A função setlocale de tempo de execução C define, altera ou consulta algumas ou todas as informações de localidade do programa atual. A rotina _wsetlocale é uma versão de caracteres largos de setlocale; os argumentos e os valores de retorno de _wsetlocale são cadeias de caracteres largos.

Ver também

Unicode e MBCS
Benefícios da portabilidade do conjunto de caracteres