As entidades nomeadas em HTML ainda são necessárias na era dos navegadores compatíveis com Unicode?

StackOverflow https://stackoverflow.com/questions/25132

Pergunta

Eu fiz muita programação em PHP nos últimos anos e uma coisa que continua me irritando é o suporte fraco para strings Unicode e multibyte (com certeza, nativamente não há nenhum).Por exemplo, "htmlentities" parece ser uma função muito usada no mundo PHP e achei absolutamente irritante quando você se esforçou para manter cada string localizável, armazenar apenas UTF-8 em seu banco de dados, apenas entregar UTF -8 páginas da web etc.De repente, em algum lugar entre o seu banco de dados e o navegador existe uma função irremediavelmente ingênua que finge que cada byte é um caractere e bagunça tudo.

Eu apenas amor simplesmente descartar esse tipo de função, elas parecem totalmente supérfluas. Ainda é necessário hoje em dia escrever 'ä' em vez de 'ä'? Pelo menos meu Firefox parece perfeitamente feliz em exibir até mesmo os glifos asiáticos mais estranhos, desde que sejam exibidos em uma codificação adequada.

Atualizar: Para ser mais preciso:São entidades nomeadas necessárias para qualquer outra coisa além de exibir tags HTML (como em "<" para "<")

Atualização 2:

@Konrad:Você está dizendo que não, entidades nomeadas não são necessárias?

@Ross:Mas não seria melhor higienizar a entrada do usuário quando ela é inserida, para manter minha lógica de saída livre de tais problemas?(supondo, é claro, que seja possível uma higienização confiável na entrada - mas então, se não for, pode ser na saída?)

Foi útil?

Solução

Entidades nomeadas em XHTML "real" (ou seja,com application/xhtml+xml, em vez do usado com mais frequência text/html modo de compatibilidade) são desencorajados.Além dos cinco definidos no próprio XML (&lt;, &gt;, &amp;, &quot;, &apos;), todos eles teriam que ser definidos no DTD do DocType específico que você está usando.Isso significa que seu navegador deve suportar explicitamente esse DocType, o que está longe de ser garantido.As entidades numeradas, por outro lado, obviamente requerem apenas uma tabela de pesquisa para obter o caractere Unicode correto.

Quanto a saber se você precisa de entidades atualmente:você pode esperar que qualquer navegador moderno suporte UTF-8.Portanto, contanto que você possa garantir que o banco de dados, a marcação e o servidor web concordem em servir isso, abandone as entidades.

Outras dicas

Se estiver usando XHTML, é realmente recomendado não usar entidades nomeadas ([carece de fontes]).Alguns navegadores (Firefox…), ao analisar isso como XML (o que normalmente não fazem), não leem os arquivos DTD e, portanto, são incapazes de manipular as entidades.

Como é uma boa prática usar UTF-8 como codificação se não houver razões convincentes para fazer o contrário, isso significa apenas que o criador dos documentos precisa de um editor decente que possa não apenas lidar com os documentos, mas também fornecer uma boa maneira de inserir os diversos glifos.O OS X realmente não tem esse problema porque os glifos mais necessários podem ser acessados ​​por meio das teclas “alt”, mas o Windows não possui esse recurso.


@Konrad:Você está dizendo que não, entidades nomeadas não são necessárias?

Precisamente.A menos, é claro, que haja restrições tolas, por ex.drivers de banco de dados legados que engasgam com UTF-8 etc.

O Safari parece ter problemas com alguns glifos, mas não com outros, pode não ser necessário mas provavelmente é melhor fazê-lo, é claro, esta é minha opinião e não é apoiada por nada além de minhas próprias observações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top