Compartilhar via


Localidades e páginas de código

Uma identificação de localidade reflete as convenções locais e a linguagem de uma determinada região geográfica. Um determinado idioma pode ser falado em mais de um país/região; por exemplo, português é falado no Brasil e em Portugal. Por outro lado, um país/região pode ter mais de um idioma oficial. Por exemplo, o Canadá tem dois idiomas: inglês e francês. Assim, o Canadá tem duas localidades distintas: inglês-canadense e francês-canadense. Algumas categorias de localidade dependentes incluem a formatação de datas e o formato de exibição de 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 exclusivo, representado por páginas de código, que inclui caracteres diferentes daqueles no alfabeto (como marcas de pontuação e números). Uma página de código é um conjunto de caracteres e está relacionada ao idioma. Dessa forma, uma localidade é uma combinação exclusiva de idioma, país/região e página de código. A configuração de página de código e localidade pode ser alterada em tempo de execução chamando a função setlocale.

Linguagens 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; a página de código ANSI 932 é usada para japonês kanji. 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 bytes para caracteres (incluindo números e marcas de pontuação) ou glifos. Qualquer página de código multibyte também pode ser representada como uma tabela muito grande (com entradas de 64K) de valores de bytes duplos para caracteres. Na prática, no entanto, ela geralmente é representada como uma tabela para os primeiros 256 caracteres (bytes únicos) e como intervalos para os valores de bytes duplos.

Para obter mais informações sobre páginas de códigos, 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 (confira a documentação das funções setlocale e _setmbcp). Além disso, a biblioteca em 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 é alterada, o comportamento do conjunto de funções dependentes da localidade muda para o ditado pela página de código escolhida. Por padrão, todas as funções dependentes de localidade iniciam 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 (assim como outras propriedades específicas da localidade) chamando a função setlocale. Uma chamada para setlocale(LC_ALL, "") define a localidade para aquela indicada pela localidade do usuário do sistema operacional.

Da mesma forma, quando a página de código multibyte é alterada, o comportamento das funções multibyte é alterado para aquele 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 de tempo de execução C setlocale define, altera ou consulta algumas ou todas as informações de localidade do programa atual. A rotina _wsetlocale é uma versão de caractere largo de setlocale; os argumentos e os valores retornados de _wsetlocale são cadeias de caracteres largos.

Confira também

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