Usando entities e referências numéricas de caracteres – NCR

Por: Henrique Costa PereiraWednesday 12 April 2006 às 11:12

Entities

Um charactere entitie (”entidade de caractere” ou apenas “entitie”) é um tipo de caractere de escape que é substituído por um único caractere de um conjunto específico de caracteres (charset). Existem basicamente duas formas de representar estes caracteres de escape. Através de NCRs (Numeric Character References), que podem ter uma forma hexadecimal ou decimal e através da entidade de caracteres (entities).

Ampersand

Uma palavra fácil de encontrar em qualquer documento que você for ler sobre charsets e encodings é a palavra “ampersand”, que é o nome dado ao caractere “&” conhecido por aqui como “e comercial” (&). Uma string de uma entitie sempre começa com um caractere de escape ampersand e termina com um ponto e vírgula ( ; ). No restante deste documento o termo ampersand será utilizado para referenciar o caractere &.

NCR Hexadecimal:  

Numeric Charactere Reference (NCR) hexadecimal. Todos os NCRs começam com ampersand e um sharp/sustenido (&#) e terminam com ponto e vírgula ( ; ). O carcatere “x” indica que os caracteres seguintes são hexadecimais e representam de forma escalar os valores de um caractere unicode, isto é, o número designado no mapa de códigos (code point) do conjunto unicode. O NCR hexadecimal não é case-sensitive.

Exemplo: <p>Vive la France &#xA0;!</p>

NCR Decimal: &#160;

Numeric Charactere Reference (NCR) decimal. Um NCR decimal usa apenas um valor decimal para representar o mesmo valor escalar.

Exemplo: <p>Vive la France &#160;!</p>

Character entity: &nbsp;

Um caractere entitie (entidade) é um tipo diferente de caractere de escape. Isso significa que somente uma quantidade limitada de caracteres (definidos pela especificação HTML ) podem ser representados como uma entitie. Note que as entities são case-sensitive. A entitie &Aacute; representa a letra Á em maísculo e a entitie &aacute; representa o á minúsculo.

Para que servem e quando eu devo usar caracteres de escape?

Basicamente, o uso de referências numéricas de caracteres (NCR) e/ou entidades de caracteres (entites) servem para representar de forma codificada, caracteres que devem ser renderizados no browser corretamente de tal maneira que se eles estivessem em sua forma normal no documento, isto não seria possível. Veja um exemplo:

As aspas são parte da sintaxe do XHTML e seu uso é obrigatório ao declarar atributos em qualquer elemento. O atributo title por exemplo em um hyperlink é representado da seguinte maneira:


<a href="http://www.w3.org" title="Conheça a W3C">
	W3C
</a>

Seu browser geralmente renderiza o atributo title em um formato de tooltip ao você colocar o ponteiro do mouse sobre um hyperlink que tenha o atributo declarado. Se no valor do title, você quiser colocar aspas você deve fazê-lo da seguinte maneira utilizandos entities:


<a href="http://www.revolucao.etc.br"
title="Site do Henrique &quot;Revolução&quot; Costa Pereira">
	Revolução Etc
</a>

Como as aspas na sintaxe do XHTML são utilizadas para iniciar e finalizar a declaração de um atributo, você não pode declarar outro conjunto de aspas dentro de uma mesma declaração de atributos. Sempre que precisar representar aspas dentro da declaração de algum atributo, você deverá utilizar uma entitie como caractere de escape no lugar das aspas. No exemplo acima eu utilizei &quot; no lugar das aspas.

Sempre quando um caractere fizer parte da sintaxe do XHTML, como “>”, ” < ” e “&” e você precisar com que eles sejam renderizados no browser de forma textual, você deve utilizar as entities correspondentes como no exemplo abaixo:

  • &lt; (<)
  • &gt; (>)
  • &amp; (&)

Você também pode utilizar entities para representar caracteres não suportados pelo seu encoding escolhido. Veja o exemplo ao representar caracteres em checo (Czech) em um documento utilizando o encoding ISO 8859-1.

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&#x1FD;ch dealer&#x16F; v &#x10C;ech&#xE1;ch a na Morav&#x11B;, kter&#xE9; prob&#x11B;hnou v pr&#x16F;b&#x16F;hu z&#xE1; &#x159;&#xED; a &#x159;&#xED;jna.

Este trecho seria renderizado da seguinte maneira:

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 o documento do exemplo estivesse utilizando um encoding como UTF-8 não seria necessário utilizar caracteres de escape de NCR para representar estes caracteres. Se casos assim acontecem com frequencia, o mais sábio seria reconsiderar trocar seu encoding para UTF-8 e ter os caracteres em sua forma normal no seu código.

Outra situação em que é necessário utilizar entities no lugar do caractere em sua forma normal é na formação de URLs que possuem parâmetros. Sempre altere o ampersand pela entitie correspondente como no exemplo:

Errado: http://example.org/my-script.php?class=guest&name=user
Certo: http://example.org/my-script.php?class=guest&amp;name=user

Quando não usar caracteres de escape?

Geralmente os desenvolvedores utilizam entities no lugar dos caracteres normais, como caracteres acentuados, estrangeirismos etc, por descuido ou desconhecimento sobre uma correta utilização de encodings. Utilizando o encoding UTF-8 da série unicode, você pode colocar todos os caracteres acentuados, estrangeirismo e citações em outros idiomas no código do seu documento em sua forma normal sem nenhum problema de renderização.

Na maioria das vezes será preferível utilizar um encoding que permite você escrever os caracteres no próprio documento em sua forma normal no lugar de ficar utilizando as entities. Usando entities fica mais difícil de ler e dar manutenção no código do seu documento sem falar que você pode aumentar consideravelmente o tamanho físico do seu documento. Você também pode ter problemas em determinados casos se utilizar NCR’s ou entities em documentos de XML onde em alguns casos as entites não são substituídas corretamente pelo caractere correspondente.

XHTML Character entity referency

Um lugar muito interessante para pesquisar as entities de caracteres permitidos em XHTML é a página XHTML Character entity referency. É simples e fácil de usar, basta passar o mouse sobre o caractere desejado, para ver a entitie, a NCR e o code point de determninado caractere.

Referências

Todas as referências deste artigo foram inseridas nos respectivos trechos.

Este texto não pode ser copiado ou reproduzido em nenhum outro site na íntegra sem autorização do autor!. Mais detalhes sobre licença de uso aqui!

Tags: ISO-8859-1 NCR UTF-8 W3C Web Standards XHTML XML ampersand atributo-title character charset charset-e-encoding encoding entitie escape unicode

7 Comentários para “Usando entities e referências numéricas de caracteres – NCR”

# 1° Charsets e encodings » Revolução Etc Wednesday 12 April 2006 às 11:12 AM GMT

[...] Usando entities e referências numéricas de caracteres – NCR [...]

# 2° Willian Thursday 13 April 2006 às 08:13 AM GMT

Não sabia que era melhor usar UTF-8 no lugar de ISO-8859-1. Sempre utilizei o ISO, achando que este seria mais completo. Mas vejo que o UTF-8 é melhor.

Passarei a utilizá-lo!

Parabéns pelo artigo!

# 3° Telma Monday 4 December 2006 às 03:4 PM GMT

Estou com um problema, quando passo por parâmetro alguma variável que é recebida no asp do vb.net essa variável fica com o texto todo errado, tipo assim:
“Aplicações de Técnicas”
como eu ajustaria isso? pois isso acontece no sistema inteiro. Eu teria que mexer em todo o código do sistema?
agradeço
abraços

# 4° BlogAjuda » Como migrar seu blog para outro servidor Tuesday 20 February 2007 às 11:20 AM GMT

[...] Henrique C. Pereira dá uma explicação mais aprofundada e técnica do assunto. No site da w3schools há uma página com todos os [...]

# 5° Fred Tuesday 5 February 2008 às 04:5 AM GMT

p*t@ que pariu é por isso que eu amo esse site.
Foi Muito útil
(quase que eu erro essa pergunta de segurança – Quanto é 4 + 4?)

# 6° Tutorial Iniciante de HTML: Tags, Atributos e Elementos « Codando Tuesday 25 March 2008 às 02:25 PM GMT

[...] é desnecessário quando você declara o charset UTF-8. Pra conhecer os usos dessas entities, leia esse texto do [...]

# 7° João Rodrigo Moreira Friday 11 April 2008 às 04:11 PM GMT

Era tudo o que eu precisava saber!

Avisos
Os itens com asterisco ( * ) são campos de preenchimento obrigatório.
Todos os links inseridos nos comentários possuem o atributo rel="nofollow" para impedir com que user agents (como os mecanismos de busca) sigam os links inseridos para desestimular spammers.
Todos devem se identificar através de e-mail válido.
Os e-mails dos usuários não serão divulgados no site.
Comentários:


Assine por feed

assinantes Assine o feed do Revolução Etc

Sobre o Revolução Etc

Foto do autor Henrique Costa Pereira O Revolução Etc é o site pessoal do Henrique C. Pereira que trabalha com design de interfaces, planejamento, arquitetura da informação e desenvolvimento para web. Ele escreve aqui sobre várias coisas relacionadas com acessibilidade, web standards, tecnologia, desenvolvimento e o que mais der na telha, além de eventualmente escrever alguma coisa ou outra para o Webinsider. Leia mais.

Livros que vão colocar minhocas na sua cabeça:

  • SEO Otimização de Sites - Paulo Teixeira
  • Não me faça pensar! - Steve Krug
  • Google Adwords a Arte da Guerra - Ricardo Vaz Monteiro
  • Design para Internet: Projetando a Experiência Perfeita - Felipe Memoria
  • Sopro no Corpo: Vive-se de Sonhos - Marco Antônio de Queiroz (MAQ)
  • 250 Segredos para Web Designers - MOLLY E. HOLZSCHLAG
  • O design do dia a dia - DONALD A. NORMAN
  • Ser e o Nada - Jean-Paul Sartre
  • Apocalípticos e Integrados - Umberto Eco
  • Ergodesign e Arquitetura de Informação - LUIZ AGNER
  • The Art and Science of Web Design - Jeffrey Veen
  • Ansiedade de Informação 2 - RICHARD SAUL WURMAN
  • Criando Páginas Web com CSS - ANDY BUDD, CAMERON MOLL, SIMON COLLISON
  • Mobile Web Design - Cameron Moll
  • Sigam-me no Twitter

Me encontre

Lugares onde digitalmente eu costumo estar presente.

Anúncios

Blogroll:

Alguns sites interessantes e blogs de amigos que eu leio com frequência. Em ordem alfabética.

Pessoas que trabalham comigo:

Sites dos colegas de trabalho na Webroom.

Já trabalharam comigo:

Som que faz a minha cabeça!

Procurando inspiração? Esta é uma breve lista do que eu ouço!

  • Diana Krall - The Very Best Of
  • U2 - How to dismantle an atomic bom
  • U2 - 18 singles
  • The Essential - Bob Dylan
  • Bob Dylan - Modern Times
  • Miles Davis - Cool & Collected
  • Miles Davis - Prestige Profiles Vol 1
  • Pink Floyd - The Division Bell
  • Pink Floyd - The wall
  • Pink Floyd - Delicate Sound Of Thunder
  • John Coltrane - The Best of John Coltrane
  • The beatles - The Beatles 1