Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os arquivos de texto Unicode podem ser codificados em vários formatos, incluindo UTF-8, UTF-16 e UTF-32. Cada um desses formatos pode ser prefixado com uma marca de ordem de bytes (BOM) que indica a ordem de bytes usada quando o texto foi escrito. As marcas de ordem de bytes disponíveis estão listadas na tabela a seguir. Para UTF-8, a marca de ordem de bytes é opcional, uma vez que os bytes podem estar apenas em uma ordem. Para UTF-16 e UTF-32, a marca de ordem de bytes é necessária porque esses formatos são sensíveis à ordem de bytes.
Observação
Uma marca de ordem de bytes não é um caractere de controle que seleciona a ordem de bytes do texto.
| Marca de ordem de bytes | Descrição |
|---|---|
| EF BB BF | UTF-8 |
| FF FE | UTF-16, little endian |
| FE FF | UTF-16, grande endian |
| FF FE 00 00 | UTF-32, little endian |
| 00 00 FE FF | UTF-32, big-endian (ordem de bytes big-endian) |
Observação
Os produtos herdados da Microsoft usam Windows-1252 ou UCS-2 (fixo com UTF-16), ordem de bytes little endian, para "Unicode". Para novas aplicações, recomenda-se UTF-8.
Idealmente, todo o texto Unicode segue apenas um conjunto de regras de ordenação de bytes. Isso não é possível, no entanto, porque os microprocessadores diferem no posicionamento do byte menos significativo. Os processadores Intel e MIPS posicionam o byte menos significativo primeiro, enquanto os processadores Motorola (e todos os arquivos Unicode com inversão de byte) o posicionam em último. Com apenas um único conjunto de regras de ordenação de bytes, os usuários de um tipo de microprocessador são forçados a trocar a ordem de bytes toda vez que um arquivo de texto simples é lido ou gravado, mesmo que o arquivo nunca seja transferido para outro sistema operacional baseado em um microprocessador diferente.
O local preferido para especificar a ordem dos bytes é em um cabeçalho de arquivo, mas os arquivos de texto não têm cabeçalhos. Portanto, Unicode definiu um caractere (U+FEFF) e um não-caractere (U+FFFE) como marcas de ordem de bytes. São imagens de bytes espelhadas umas das outras.
Como a sequência U+FEFF é extremamente rara no início de um arquivo de texto não-Unicode regular, ela pode servir como um marcador implícito ou assinatura para identificar o arquivo como um arquivo Unicode. Os aplicativos que leem arquivos de texto Unicode e não-Unicode devem usar a presença dessa sequência como um indicador de que o arquivo é provavelmente um arquivo Unicode. Compare essa técnica com o uso do marcador EOF MS-DOS para encerrar arquivos de texto.
Quando um aplicativo encontra U+FEFF no início de um arquivo de texto, ele normalmente processa o arquivo como um arquivo Unicode, embora possa executar verificações heurísticas adicionais para verificação. Essa verificação pode ser tão simples quanto testar para descobrir se a variação nos bytes de ordem baixa é muito maior do que a variação nos bytes de ordem alta. Por exemplo, se o texto ASCII for convertido em texto Unicode, cada segundo byte será 0. Além disso, a verificação dos caracteres de avanço de linha e de retorno de carro (U+000A e U+000D) e do tamanho par ou ímpar do ficheiro pode fornecer um forte indicador da natureza do ficheiro.
Quando um aplicativo encontra U+FFFE no início de um arquivo de texto, ele o interpreta como significando que o arquivo é um arquivo Unicode com inversão de byte. O aplicativo pode trocar a ordem dos bytes ou alertar o usuário de que ocorreu um erro.
Como o caractere de marca de ordem de bytes Unicode não é encontrado em nenhuma página de código, ele desaparece se os dados forem convertidos em ANSI. Ao contrário de outros caracteres Unicode, ele não é substituído por um caractere padrão quando é convertido. Se uma marca de ordem de bytes for encontrada no meio de um arquivo, ela não será interpretada como um caractere Unicode e não terá efeito na saída de texto.
Observação
O valor Unicode U+FFFF é ilegal em arquivos de texto simples e não pode ser passado entre aplicativos. É reservado para o uso privado de um aplicativo.
Tópicos relacionados