Seção 3: Autores

Q 3.9: XML pode utilizar caracteres que não estejam em Latim?

Sim, este é o padrão

Sim, a Especificação XML diz explicitamente que o XML usa o ISO 10646 , o repertório de caráter padrão internacional que abrange os idiomas mais conhecidos. O Unicode é um repertório idêntico, e os dois padrões se seguem. A especificação diz (2.2): 'Todos os processadores XML devem aceitar as codificações UTF-8 e UTF-16 do ISO 10646 ...'. Há uma FAQ do Unicode em http://www.unicode.org/faq/ e um exemplo da gama de alfabetos e símbolos em http://www.cogsci.ed.ac.uk/~richard/unicode-sample-3-2.html .

Enquanto o software XML pode permitir que você insira qualquer caractere Unicode em um documento, seus leitores só podem ver os caracteres se o computador tiver uma fonte adequada. Nem todos os tipos de letra e arquivos de fontes possuem todo o repertório Unicode (aqueles que são enormes ).

UTF-8 é uma codificação de Unicode em caracteres de 8 bits: os primeiros 128 são iguais a ASCII, e os caracteres de ordem superior são usados para codificar qualquer outra coisa do Unicode em sequências entre 2 e 6 bytes . O UTF-8 em seu formulário de um único octeto é, portanto, o mesmo que o ISO 646 IRV (ASCII), para que você possa continuar a usar o ASCII para inglês ou outras línguas usando o alfabeto latino sem diacríticos (acentos). Note que o UTF-8 é incompatível com o ISO 8859-1 (ISO Latin-1) após o ponto 127 do código decimal (o fim do ASCII).

UTF-16 é uma codificação do Unicode em caracteres de 16 bits, o que permite representar 16 planos. UTF-16 é incompatível com ASCII porque ele usa dois bytes de 8 bits por caractere (quatro bytes acima de U + FFFF).

Peter Flynn escreve:

A especificação de codificação pode referir-se a qualquer configuração de personagem que seu software suporte, mas a Especificação XML exige apenas que os aplicativos suportem UTF-8 e UTF-16. Algumas das codificações comuns suportadas pelo software incluem:

US-ASCII

Caracteres TAB, LF, CR, espaço e os caracteres imprimíveis 33 a 126 (decimal) somente (todos os outros caracteres de controle são proibidos por XML).

ISO-8859-1

(Europeu ocidental Latino-1) Como códigos ASCII mais códigos 128 a 255 (decimal). Abrange a maioria (mas não todas) cartas acentuadas da Europa Ocidental.

ISO-8859-2 a 15

Esses outros planos do ISO-8859 cobrem os conjuntos restantes e diferentes de símbolos alfabéticos e outros baseados em latim.

'Codepages' e outros conjuntos obsolescentes

Alguns softwares também podem suportar várias "páginas de códigos" obsoletas, como IBM-850, Microsoft Windows-1252, Apple Macintosh Romano-8, DEC Multinacional e outras codificações de caracteres não padrão, mas geralmente não são portáteis e devem ser evitadas onde possível.

Uma prática comum na Europa Ocidental é usar ISO-8859-1 para que a maioria das letras acentuadas comuns possam ser usadas como bytes únicos e usar referências de entidades de caracteres ou entidades numéricas para todos os outros caracteres. Isso tem a vantagem de que tais arquivos podem ser abertos em quase todos os editores de um só byte. A desvantagem é que as entidades numéricas não são mnemônicas, e as entidades de caracteres devem ser declaradas em DTD ou subconjunto interno, mas, se elas são raras, isso pode não ser um problema sério.

Bertilo Wennergren escreve:

UTF-16 é uma codificação que representa cada caractere Unicode do primeiro plano (os primeiros caracteres de 64K) do Unicode com uma unidade de 16 bits - na prática com dois bytes para cada personagem. Assim, não é compatível com o ASCII nem o Latin-1. UTF-16 também pode acessar um adicional de 1 milhão de caracteres por um mecanismo conhecido como pares de substituição (duas unidades de 16 bits para cada personagem).

‘…os mecanismos para sinalizar quais dos dois estão em uso, e para trazer outras codificações em jogo, estão [...] na discussão de codificações de caracteres.' A Especificação XML explica como especificar em seu arquivo XML qual grupo de caractere codificado você está usando.

Independentemente da codificação específica usada, qualquer caractere no conjunto de caracteres ISO 10646 pode ser referido pelo equivalente decimal ou hexadecimal da sua string de bits": então, independentemente do tipo de personagem que você use pessoalmente, você ainda pode se referir a caracteres individuais específicos De outro lugar no repertório codificado usando &#dddd; (Código de personagem decimal) ou &#xHHHH; (Código de caractere hexadecimal, em maiúsculas). A terminologia pode ficar confusa, assim como os números: veja o Dicionário Conceito ISO 10646 . Rick Jelliffe tem XML-isados conjuntos de entidades de caracteres ISO . As informações de codificação de Mike Brown em http://skew.org/xml/tutorial/ são uma explicação muito útil da necessidade de codificação correta. Existe uma excelente base de dados on-line de glifos e caracteres em muitas encodificações do servidor Estonian Language Institute em http://www.eki.ee/letter/ .