Diferenças entre edições de "UTF-16"

1 byte adicionado ,  11h49min de 13 de novembro de 2009
sem resumo de edição
m (Bot: Adicionando: cs:UTF-16)
 
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 caracterecarácter identificado por 0 é 0. O código UTF-16 do caracterecarácter 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 caracterecarácter atribuído a esta série de números, que são menores que FFFF). O primeiro caracterecarácter a representar, maior que FFFF é o 10000. Para este é atribuído o código D800 DC00. Para o caracterecarácter 10001, o código é D800 DC01. O último caracterecarácter Unicode definido, que é o 10FFFD, vira o valor DBFF DFFD. O algoritmo que retorna corretamente o
código UTF-16 de um dado "caracterecarácter alto" é o seguinte:
 
<pre>
Hipótese: ultimo caracterecarácter ISO/IEC 10646 Z = 10FFFD
Seja U: caracterecarácter ISO/IEC 10646 que queremos passar para UTF-16 (U tem 21 bits)
 
U' := U - 0x10000 (U' tem 20 bits)
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 caracterecarácter serializado. O comando '''BOM''' é representado pela codificação UTF-16 do caracterecarácter '''"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.
{| border="1"
|-----
! identificador do caracterecarácter
! carácter
! caractere
! código UTF-16
! exemplo de [[glifo]]*
==Exemplo de algoritmo corrido para codificação de "caracteres altos"==
 
Queremos codificar em UTF-16 o caracterecarácter 0x64321. Como este é maior que 0xFFFF, deve
ser codificado por um par:
 
</pre>
 
Resultado da codificação: o caractercarácter Unicode 0x64321 é codificado em UTF-16 como 0xD950 0xDF21
 
[[Categoria:Unicode]]
Utilizador anónimo