UTF-16: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Comecei a traduzir do inglês
Mais tradução
Linha 8: Linha 8:


Para os caracteres que tenham recebido um identificador entre 0 e 65535 nas listas Unicode ou ISO/IEC 10646, a codificação UTF-16 representa-os simplesmente como um número idêntico ao
Para os caracteres que tenham recebido um identificador entre 0 e 65535 nas listas Unicode ou ISO/IEC 10646, a codificação UTF-16 representa-os simplesmente como um número idêntico ao
seu código. Por exemplo, o código UTF-16 do caractere identificado por 0 é 0. O código UTF-16 do caractere identificado pelo [[número hexadecimal]] é FFFD.
seu código. Por exemplo, o código UTF-16 do caractere identificado por 0 é 0. O código UTF-16 do caractere identificado pelo [[número hexadecimal]] FFFD é FFFD.


No caso dos valores maiores que 65535 ([[número hexadecimal]] FFFF), o UTF-16 representa-os
No caso dos valores maiores que 65535 ([[número hexadecimal]] FFFF), o UTF-16 representa-os
Linha 14: Linha 14:
código UTF-16 de um dado "caractere alto" é o seguinte:
código UTF-16 de um dado "caractere alto" é o seguinte:


hipótese: ultimo caractere Unicode Z = 10FFFD
hipótese: ultimo caractere ISO/IEC 10646 Z = 10FFFD
seja U: caractere ISO/IEC 10646 que queremos passar para UTF-16 (U tem 21 bits)
seja U: caractere ISO/IEC 10646 que queremos passar para UTF-16 (U tem 21 bits)


Linha 31: Linha 31:
seus bits colocados em alguma ordem bem definida. Devido às diferenças de arquitetura de computadores, especificam-se três formas de serialização: UTF-16, UTF-16LE e UTF-16BE.
seus bits colocados em alguma ordem bem definida. Devido às diferenças de arquitetura de computadores, especificam-se três formas de serialização: UTF-16, UTF-16LE e UTF-16BE.


O esquema UTF-16 de serialização requer que a ordem de bytes seja declarada com um comando [[Byte Order Mark]] antes do primeiro caractere serializado. O comando '''BOM''' é representado pela codificação UTF-16 do caractere '''"Zero-Width No-Break Space"''', que tem
O esquema UTF-16 de serialização
o código FEFF, no começo da mensagem. Numa máquina [[little-endian]], este código é serializado como FF FE (isto é o primeiro byte a ser armazenado ou transmitido é o FF, após este, FE), enquanto numa
máquina [[big-endian]], como FE FF. Um BOM no início de um texto UTF-16, encontrado por um desserializador UTF-16 é tratado como um comando e não é incluído como parte da mensagem.


Os esquemas '''UTF-16LE''' e '''UTF-16BE''', em vez de utilizarem um comando, simplesmente assumem implicitamente uma das formas de operação. Este serializa em big-endian e aquele, em little-endian. Um código BOM no começo da mensagem faz, portanto, parte da própria mensagem.
The UTF-16 encoding scheme mandates that the byte order must be declared by prepending a [[Byte Order Mark]] before the first serialized character. This '''BOM''' is the encoded version of the Zero-Width No-Break Space character, Unicode number FEFF in hex, manifesting as the byte sequence FE FF for big-endian, or FF FE for little-endian. A BOM at the beginning of UTF-16 encoded data is considered to be a signature separate from the text itself; it is for the benefit of the decoder.

The '''UTF-16LE''' and '''UTF-16BE''' encoding schemes are identical to the UTF-16 encoding scheme, but rather than using a BOM, the byte order is implicit in the name of the encoding (LE for little-endian, BE for big-endian). A BOM at the beginning of UTF-16LE or UTF-16BE encoded data is not considered to be a BOM; it is part of the text itself.

The [[Internet Assigned Numbers Authority|IANA]] has approved UTF-16, UTF-16BE, and UTF-16LE for use on the [[Internet]], by those exact names (case insensitively). The aliases '''UTF_16''' or '''UTF16''' may be meaningful in some programming languages or software applications, but they are not standard names.

Today UTF-16 is the native internal representation of text in [[Microsoft Windows]] and in the [[Java programming language]].



UTF-16 é um formato de [[codificação]] de caracteres em [[computador]]es.


A [[Internet Assigned Numbers Authority|IANA]] aprovou as codificações UTF-16, UTF-16BE e UTF-16LE para uso na [[Internet]], com exatamente estes nomes (sem diferenciar maiúsculas
ou minúsculas). As variações '''UTF_16''' ou '''UTF16''' podem significar o mesmo em certas linguagens de programação ou certos programas, mas não são considerados padrões.


Hoje em dia, UTF-16 é a representação nativa de texto no [[Microsoft Windows]] e na [[Linguagem de programação Java]].





Revisão das 11h39min de 18 de janeiro de 2005

{{{1}}}

Em computação, UTF-16 é um "Formato de Transformação Unicode" de 16-bits. Um formato de tranformação Unicode é uma codificação de caracteres que provê uma maneira de representar os diversos caracteres abstratos, presentes no Unicode e no ISO/IEC 10646, como uma série de palavras de 16-bits, para então poder ser armazenados ou transmitidos por uma rede. A codificação UTF-16 é oficialmente definida no Anexo Q do padrão ISO/IEC 10646-1. É também descrita em "The Unicode Standard", versões 3.0 e superiores, bem como no RFC 2781.

Para os caracteres que tenham recebido um identificador entre 0 e 65535 nas listas Unicode ou ISO/IEC 10646, a codificação UTF-16 representa-os simplesmente como um número idêntico ao seu código. Por exemplo, o código UTF-16 do caractere identificado por 0 é 0. O código UTF-16 do caractere identificado pelo número hexadecimal FFFD é FFFD.

No caso dos valores maiores que 65535 (número hexadecimal FFFF), o UTF-16 representa-os como um par de códigos, cada um deles valendo desde D800 até DFFF (isto é possível porque não existe nenhum caractere atribuído a esta série de números, que são menores que FFFF). O primeiro caractere a representar, maior que FFFF é o 10000. Para este é atribuído o código D800 DC00. Para o caractere 10001, o código é D800 DC01. O último caractere Unicode definido, que é o 10FFFD, vira o valor DBFF DC00. O algoritmo que retorna corretamente o código UTF-16 de um dado "caractere alto" é o seguinte:

hipótese: ultimo caractere ISO/IEC 10646 Z = 10FFFD
seja U: caractere ISO/IEC 10646 que queremos passar para UTF-16 (U tem 21 bits)
U' := U - 0x10000 (U' tem 20 bits)
uh := dez bits altos de U' (uh tem 10 bits)
ul := dez bits baixos de U' (ul tem 10 bits)
vh := uh estendido para 16 bits (colocados zeros à esquerda)
vl := vh estendido para 16 bits (colocados zeros à esquerda)
utf16,1 := 0xD800 | vh
utf16,2 := 0xDC00 | vl

Após a execução do algoritmo, o código UTF-16 é composto de utf16,1 e utf16,2.

Dado o código UTF-16 (seja com 16, seja com 32 bits), este há de ser "serializado", isto é, seus bits colocados em alguma ordem bem definida. Devido às diferenças de arquitetura de computadores, especificam-se três formas de serialização: UTF-16, UTF-16LE e UTF-16BE.

O esquema UTF-16 de serialização requer que a ordem de bytes seja declarada com um comando Byte Order Mark antes do primeiro caractere serializado. O comando BOM é representado pela codificação UTF-16 do caractere "Zero-Width No-Break Space", que tem o código FEFF, no começo da mensagem. Numa máquina little-endian, este código é serializado como FF FE (isto é o primeiro byte a ser armazenado ou transmitido é o FF, após este, FE), enquanto numa máquina big-endian, como FE FF. Um BOM no início de um texto UTF-16, encontrado por um desserializador UTF-16 é tratado como um comando e não é incluído como parte da mensagem.

Os esquemas UTF-16LE e UTF-16BE, em vez de utilizarem um comando, simplesmente assumem implicitamente uma das formas de operação. Este serializa em big-endian e aquele, em little-endian. Um código BOM no começo da mensagem faz, portanto, parte da própria mensagem.

A IANA aprovou as codificações UTF-16, UTF-16BE e UTF-16LE para uso na Internet, com exatamente estes nomes (sem diferenciar maiúsculas ou minúsculas). As variações UTF_16 ou UTF16 podem significar o mesmo em certas linguagens de programação ou certos programas, mas não são considerados padrões.

Hoje em dia, UTF-16 é a representação nativa de texto no Microsoft Windows e na Linguagem de programação Java.



Ele é um formato de transformação de Unicode 16 bits, que permite a representação de séries de caracteres abstratos do Unicode e do ISO/IEC 10646, como uma série de palavras de 16 bits convenientes para armazenagem e transmissão via redes de computadores. UTF-16 é oficialmente definido no Annex Q of ISO/IEC 10646-1. Também é descrito no "The Unicode Standard version 3.0 and higher", assim como no RFC 2781 da IETF.

Este artigo é um esboço. Você pode ajudar a Wikipédia expandindo-o. Editor: considere marcar com um esboço mais específico.