Ir para o conteúdo

UTF-16

Origem: Wikipédia, a enciclopédia livre.

{{{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.

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 Unicode 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

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 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 computadores.




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.