A tecla de acesso 'n' salta para outro local na navegação da página. Saltar para o início do conteúdo.

Este documento é uma tradução. Se ocorrerem discrepâncias ou erros, o original em inglês mais recente terá precedência. Os direitos autorais originais pertencem à W3C, como indicado abaixo.

Tradutor: Portuguese Translation Team, Trusted Translations, Inc.

s_gotoW3cHome Internacionalização
 

Uso de caracteres de escape em linguagem markup e CSS

Público alvo: Programadores XHTML/HTML (que utilizem editores ou scripting), criadores de scripts (PHP, JSP, etc.), e qualquer um que precise de orientação em como e quando usar alternativas aos caracteres actuais num documento.

Pergunta

Como é que posso usar caracteres de escape em linguagem markup e CSS, e quando é que deverei ou não usá-los?

Resposta

Que tipos de caracteres de escape podem ser usados em linguagem markup?

Pode usar um caracter de escape para representar qualquer carácter Unicode em XML ou (X)HTML com o uso de apenas caracteres ASCII.

Diferentes especificações resultam e nomes diferentes a estas criações. Por exemplo, a especificação HTML5 chama às referências de entidade de caracteres referências de caracteres nomeadas. Nós escolhemos o uso de nomes para este artigo que esperamos serem reconhecidamente diferentes e claros no significado para o leitor, independentemente das variações usadas até ao momento.

NCRs (referências de caracteres numéricas) e referências de entidade de caracteres são tipos de escapes de caracteres usados em linguagem markup. Por exemplo, os seguintes são formas diferentes de representação do carácter ESPAÇO SEM-QUEBRA U+00A0

(O carácter ESPAÇO SEM-QUEBRA parece um espaço mas evita que uma linha se separe entre os caracteres em cada lado. Em Francês é normalmente usada com pontuação como os dois pontos e o ponto de exclamação, que são precedidos por um espaço mas não deverá aparecer no principio de uma linha durante a separação de linha do texto)

 
Um NCR hexadecimal. Todos os NCRs são iniciados com &# e terminam com ;. O x indica que o seguinte é um número hexadecimal em representação do valor do ponto do código de um caracter Unicode. O número hex não é sensível a maíusculas/minúsculas.
Exemplo: <p>Vive la France&#xA0;!</p>
&#160;
Um NCR decimal. Isto usa um número decimal para representar o mesmo ponto do código Unicode.
Exemplo: <p>Vive la France&#160;!</p>
&nbsp;
Uma referência de entidade de carácter. Isto é um tipo muito diferente de escape. As referências de entidade de caracteres são definidas na definição de linguagem markup. Isto significa, por exemplo, que para o HTML apenas uma gama específica de caracteres (definida pela especificação HTML) pode ser representada como referências de entidade de caracter (e que inclui apenas um pequeno sub-conjunt do intervalo Unicode). Observe que o nome de entidade é sensível a maíusculas/minúsculas: em HTML, &Aacute; representa a letra maíuscula Á, e &aacute; representa a minúscula á.
Exemplo: <p>Vive la France&nbsp;!</p>
Alguns navegadores permitem-lhe omitir o ponto e vírgula do fim de uma referência de carácter numérico, mas isto não é recomendado, porque poderá levar a problemas de interoperabilidade. Com o uso do ponto e vírgula também evita o problema potencial do final do escape se tornar indetectável quando este está integrado no texto.

Um assunto que merece uma nota especial é que os valores de referências de caracteres numéricos (como &#x20AC; ou &#8364; para o sinal do euro ) são interpretadas como caracteres Unicode � independentemente da codificação que usar no seu documento. É um erro comum das pessoas que trabalham no conteúdo codificado na página de código do Windows 1252, por exemplo, tentar representar o sinal do euro com &#x80;. O motivo é que o euro aparace na posição 80 (em hexadecimal) ná página de código 1252. Com o uso de &#x80;.em HTML deverá realmente produzir um caracter de controlo, porque o escape irá ser expandido devido à posição 80 no repertório Unicode. (de facto, os navegadores tendem a corrigir silenciosamente esse erro. Consulte a test pages.)

Escapes CSS

CSS representa caracteres de escape de uma forma diferente. Para representar um carácter, inicie com barra invertida seguido pelo número hexadecimal que representa o valor do ponto do código Unicode do carácter.

Se existir um carácter seguinte que não esteja no intervalo de A–F, a–f or 0–0, é tudo o que precisa. O exemplo seguinte representa a palavra emoção.

Exemplo: .\E9motion { ... }

Se, por outro lado, o carácter seguinte é um que possa ser usado em números hexadecimais, não será claro onde irá terminar o número. Nestes casos há duas opções. A primeira é usar um espaço depois do escape. Este espaço é parte da sintaxe de saída, e não fica depois do carácter de escape ter sido avaliado. O exemplo seguinte mostra como pode representar a palavra edição.

Exemplo: .\E9 dition { ... }

Alternativamente, pode usar um número hexadecimal de 6 dígitos, com ou sem um espaço. Tem aqui uma forma alternativa de escrita Edition.

Exemplo: .\0000E9dition { ... }

Porque qualquer espaço seguinte ao número hexadecimal pode ser integrado como parte do escape, se realmente desejar que apareça um espaço depois do carácter de escape irá precisar de adicionar dois espaços (depois de um número hexadecimal de qualquer tamanho).

A barra invertida pode também ser usada em CSS antes de um carácter de sintaxe para prevenir que seja lido como parte do código. Para mais informações sobre saídas CSS, consulte Especificações CSS 2.1.

Quando não usar caracteres de escapes

É quase sempre preferível usar uma codificação que lhe permita representar caracteres no seu formato normal, em vez que usar referências de entidade de caracteres ou NCRs.

O uso de escapes pode tornar difícil ler e manter o código fonte, e pode também significar aumento do tamanho do ficheiro.

Muitos programadores de língua Inglesa têm a expectativa que outras línguas apenas fazer uma utilização ocasional de caracteres não ASCII, mas isto é errado.

Repare por exemplo a passagem seguinte em Checo.

Jako efektivnější se nám jeví pořádání tzv. Road Show prostřednictvím našich autorizovaných dealerů v Čechách a na Moravě, které proběhnou v průběhu září a října.

Se for usar NCRs para todos os caracteres não ASCII, a passagem irá tornar-se ilegível, difícil de manter e muito mais comprida. Será, claro, muito pior para uma língua que não use de todo caracteres Latinos.

Jako efektivn&#x115;j&#x161;&#xED; se n&#xE1;m jev&#xED; po&#x159;&#xE1;d&#xE1;n&#xED; tzv. Road Show prost&#x159;ednictv&#xED;m na&#x161;ich autorizovan&#xFD;ch dealer&#x16F; v &#x10C;ech&#xE1;ch a na Morav&#x11B;, kter&#xE9; prob&#x11B;hnou v pr&#x16F;b&#x11B;hu z&#xE1;&#x159;&#xED; a &#x159;&#xED;jna.

Como referimos anteriormente, utilize caracteres em vez de escapes para texto normal.

Uso em XHTML. Uso de referências de entidade de caracteres num documento que é avaliado como XML pode-se tornar problemático se as entidades forem definidas fora do seu documento e as ferramentas que processam o XML não lerem os ficheiros externos. Nestes casos, as referências de entidade não serão substituidas por caracteres. Por isto, se precisar de usar caracteres de escape, poderá ser mais seguro usar referências de caracteres numéricas, ou definir as entidades de carácter que precisa dentro do documento.

Se usar referências de entidade de caracteres definidos em HTML (como &aacute;) para representar caracteres em XHTML, deverá ter cuidado sempre que o seu conteúdo for processado com compiladores XML ou outras ferramentas.

Quando usar caracteres de escape

Caracteres de sintaxe. Existem três caracteres que devem sempre aparecer no conteúdo como escapes, para que não se confundam com a sintaxe da linguagem markup. Estes são parte da linguagem para todos os documentos em XML e para HTML.

Poderá também desejar representar as aspas (") como &quot; e a plica (') como &apos; – particularmente no texto de atributos quando precisar de usar o mesmo tipo de aspas que as que definem o valor de atributo. Repare, porém, que, apesar de ser parte da linguagem XML, &apos; não é definido em HTML 4.01 e alguns navegadores não suportam &apos; em HTML. Por este motivo as especificações XHTML recomendam em substituição o uso de &#39; se o texto for lido por um navegador HTML.

Codificação de espaços. Os caracteres de escape podem ser úteis para representar caracteres não suportados pela codificação que escolheu para o documento, por exemplo, para representar caracteres Chineses num documento ISO Latin 1. Deverá perguntar primeiro, porém, porque é que não mudou a codificação do documento para algo que cubra todos os caracteres que necessita (como, claro, UTF-8).

Problemas de entrada. Se a sua ferramenta de edição não lhe permitir introduzir facilmente os caracteres necessário pode também recorrer ao uso de escapes. Repare que isto não é uma solução a longo-prazo, nem uma que funcione bem se tiver de introduzir muitos destes caracteres – demora muito e torna a manutenção mais difícil. Idealmente deverá escolher uma ferramenta de edição que lhe permita introduzir estes caracteres como caracteres. Alternativamente, se apenas precisar do caracter ocasional, use uma ferramenta de mapeamento de caracter ou um seleccionador de caracteres.

Caracteres invisíveis ou ambíguos. Um papel particularmente útil para os escapes é representar os caracteres que são invisíveis ou ambíguos na sua apresentação.

Um exemplo é o carácter Unicode 200F: MARCA DA DIREITA PARA A ESQUERDA. Este carácter pode ser usado para clarificar a direcção em texto bidireccional (p.ex. durante o uso de scripts em Árabe ou Hebraico). Não tem forma gráfica, porém; é assim difícil de ver onde é que estes caracteres estão no texto, e se eles forem esquecidos ou perdidos poderão criar resultados inesperados durante uma edição mais tarde. Ao contrário, o uso de &rlm; (o o seu equivalente NCR &#x200F;) torna muito fácil localizar estes caracteres.

Um exemplo de um caracter ambíguo é 00A0: ESPAÇO SEM-QUEBRA. Este tipo de espaço previne a quebra de linha, mas assemelha-se como qualquer outro espaço quando usado como carácter. Com o uso de &nbsp; (ou &#xA0;) fica muito claro onde é que esses espaços aparecem no texto.

Utilização de caracteres de escape em atributos de estilo

É melhor escolher a codificação certa para que possa apenas usar caracteres em declarações CSS. Esta secção descreve o que deverá ser uma circunstância muito rara onde poderá ter decidido usar escapes.

É normalmente uma boa ideia colocar informações de estilo numa folha de estilo à parte ou num elemento estilo no cabeçalho de um ficheiro XHTML ou HTML. Ocasionalmente, ou talvez de forma temporária, poderá em substituição usar um atributo de estilo num elemento particular. Ainda mais raro, é se desejar representar um ou mais caracteres no atributo estilo com caracteres de escape.

Um atributo estilo em XHTML ou HTML pode representar caracteres com NCRs, entidades ou escapes CSS. Por outro lado, o elemento de estilo em HTML não pode conter nem NCRs nem entidades, e o mesmo se aplica a uma folha de estilo externa.

Por existir a tendência de mover estilos declarados em atributos para o elemento de estilo ou uma folha de estilo externa (por exemplo, isto poderá ser efectuado automaticamente com o uso de uma aplicação ou scrip), é mais seguro usar escapes CSS.

Por exemplo, é melhor usar

<span style="font-family: L\FC beck">...</span>

do que

<span style="font-family: L&#xFC;beck">...</span>

A propósito

Alteração para UTF-8 significa voltar a gravar o seu ficheiro. A utilização de uma codificação como UTF-8 significa que pode evitar a necessidade para muitos escapes q apenas trabalhar com caracteres. Para mudar a codificação do seu documento, porém, não é suficiente apenas mudar a declaração de codificação no topo da página ou no servidor. Precisa voltar a gravar o seu documento nessa codificação. Para ajudar a perceber como o fazer com a sua aplicação leia Definição da codificação em aplicações web authoring.

Hex vs. decimal. Típicamente quando a Norma Unicode se refere a ou lista caracteres através de valor hexadecimal. Por exemplo, o ponto do código para a letra á pode ser referida como U+00E1. Dado a prevalência desta convencção, é normalmente útil, apesar de não necessário, usar os valores numéricos hexadecimais em escapes em vez de valores decimais. Não precisa usar zeros à esquerda em escapes, p.ex.. á podem ser representados como &#xE1;.

Caracteres suplementares. Os caracteres suplementares são aqueles caracteres Unicode que têm pontos de código superiores aos caracteres no Plano multilingue básico (BMP). Em UTF-16 é codificado um carácter suplementar com dois pontos de código alternativo de 16-bit a partir do BMP. Devido a isto, algumas pessoas pensam que os caracteres suplementares necessitam ser representados com o uso de dois escapes, mas isto é incorrecto – deverá usar o valor do ponto de código único para esse carácter. Por exemplo, use &#x233B4; em vez de &#xD84C;&#xDFB4;.

E comercial (&) único. Apesar dos agentes HTML do utilizador tenderem a virar a cara para o lado, nunca tenha um E comercial único (&) no seu documento. Deverá prestar atenção particular aos URLs que incluam parâmetros. Por exemplo, o seu documento tiver http://example.org/my-script.php?class=guest&amp;name=user, em vez de http://example.org/my-script.php?class=guest&name=user.

Dê-nos a sua opinião (em inglês).

Subscreva uma alimentação RSS.

Novos recursos

Notícias na página principal

Twitter (Notícias na página principal)

‎@webi18n

Leitura complementar

Autor: Richard Ishida, W3C. Tradutor: Portuguese Translation Team, Trusted Translations, Inc..

XHTML 1.0 válida!
CSS válido!
Codificado em UTF-8!

Traduzido de conteúdo em inglês datado de 2010-08-12. Última versão traduzida modificada 2011-04-18 14:03 GMT

Para obter o histórico de alterações do documento, procure qa-escapes no blog da i18n.