Conjunto de caracteres do documento

Intended audience: Codificadores de XHTML/HTML (utilizando editores ou escrita), criadores de escrita (PHP, JSP, etc.), codificadores de CSS, criadores de XSLT, gestores de projectos Web, e quem quiser compreender o que é o Conjunto de Caracteres do Documento, e como se relaciona com as codificações utilizadas num documento ou página.

Question

O que é o 'Conjunto de Caracteres do Documento' para XML e HTML, e como se relaciona com as codificações que utilizo nos meus documentos?

Answer

Para ser mais simples e em linha com a prática comum, quando nos referimos a Unicode neste FAQ estamos a referir-nos ao conjunto de caracteres definido pelo Unicode e pela ISO/IEC 10646.

O conjunto de caracteres do documento ou conjunto de caracteres base de XML e HTML (da versão 4.0) é o Conjunto de Caracteres do Documento (UCS) definido tanto pela ISO/IEC 10646 como pelos padrões Unicode, que são códigos para códigos idênticos.

Isto significa que o modelo lógico que descreve como os XML e HTML são processadas é descrito em termos do conjunto de caracteres Unicode.

Não significa que todos os documentos HTML e XML tenham que ser codificados como Unicode, mas significa que estes documentos apenas podem conter caracteres definidos pelo Unicode. Repare que conjuntos de caracteres e codificações de caracteres são coisas diferentes - por exemplo, o repertório completo do Unicode pode ser codificado por mais de uma forma, por exemplo. UTF-8, UTF-16 e UTF-32. Pode ser utilizada qualquer codificação de caracteres nos seus documentos desde que seja adequadamente declarada e os caracteres que representa sejam um subconjunto do repertório Unicode. (Seria extremamente invulgar encontrar um que não fosse um subconjunto.)

Por outro lado, é boa ideia utilizar sempre que possível uma codificação Unicode, uma vez que simplifica muitos aspectos de internacionalização da Web e é amplamente suportado por agentes do utilizador de HTML, e por todos os processadores de XML.

Uma consequência importante do conjunto de caracteres do documento é que os valores das referências dos caracteres numéricos (tais como ǵ e ǵ para a LETRA G MINÚSCULA COM ASSENTO AGUDO) são interpretados como caracteres Unicode - independentement da codificação que estiver a utilizar no seu documento. Esta é uma fonte comum de erros entre os que não têm uma distinção clara.

By the way

Na prática, nem todos os caracteres Unicode podem ser utilizados em todos os XML e HTML. Por exemplo, alguns caracteres são excluídos de coisas tais como nomes de etiquetas de elementos e alguns caracteres de controlo são excluídos do conteúdo. Contudo, tenha em consideração que o XML 1.1 permite a utilização de muitos mais caracteres em coisas como nomes de etiquetas de elementos do que o XML 1.0.

Informação do histórico

O HTML 2.0 definiu que todos os caracteres existentes num documento HTML devem ser interpretados relativamente à ISO 8859-1 (também conhecida como ISO Latin 1), mas também anunciou que todas as versões futuras de HTML irão utilizar um superconjunto destes, ou seja, Unicode (ou ISO 10646), o que significa que estarão disponíveis um grande número dos caracteres mundiais.

As discussões sobre a melhor forma de utilizar o Unicode na Internet ( RFC 2130, Abril 1997, e RFC 2070, Jan 1997) ainda não tinham sido concluídas quando HTML 3.2 foi lançado (Jan 1997), pelo que a inclusão do Unicode no HTML teve que esperar pelo HTML 4.0 (Dez 1997).