[HTML] Codificação | Zoom Digital : Reviews de Smartphones, Tutoriais, Notícias

[HTML] Codificação

Por Philipe Cardoso
Categoria: Tecnologia
jan 29th, 2009
6 Comments
771 Views

Olá amigos! O HTML é realmente maravilhoso. Sem ele a Internet não seria tão expressiva quanto é hoje. Vamos continuar a falar deste assunto aqui no Zoom Digital que tem um certo affair para a área de web.

Durante a criação de nossas páginas para a Internet muitas vezes temos problemas com a correta exibição dos caracteres acentuados. Para resolver este tipo de problema, neste post, vamos falar um pouco sobre Charset.

Mojibake ISO-8859-1 exibido em UTF-8

Mojibake ISO-8859-1 exibido em UTF-8

Recordar é viver

A princípio preciso recordá-los que cada caractere exibido no computador é convertido para números e depois para código binário. Para efetuar esta conversão existe a tabela ASCII. Acontece que a tabela ASCII foi criada por falantes do idioma inglês e nela não foram incluídos os códigos correspondentes aos nossos caracteres acentuados. Aqui que se inicia o nosso problema. Buscando efetuar a inclusão dos caracteres acentuados, paralelamente, em diversos locais, foram incluídos mais caracteres nesta lista e criadas novas tabelas adicionais.

Finalmente podemos escrever com caracteres acentuados em nossos computadores, basta indicar que o computador precisa utilizar uma destas tabelas extras. Para facilitar nossa vida muitas destas tabelas foram reunidas na expecificação ISO-8859. Geralmente utilizamos a primeira tabela, ISO-8859-1, para a criação de nossas páginas pois ela incluí todos os caracteres latinos que utilizamos em nosso idioma.

Com a evolução da web percebemos que este sistema não é muito prático. Se nosso intento fosse internacionalizar um site, por exemplo, permitindo que ele funcione corretamente em português e japonês precisaríamos criar cada pagina em duas versões: ISO-8859-1 e Shift-JIS. Acontece que isso é muito trabalhoso. Imaginem o esforço necessário para criar um projeto como a Wikipédia que está disponível em 257 idiomas e dialetos[1]? E isso não é apenas um problema para a pessoa que cria a página. Imagine um sistema de tradução do japonês para o português. Em determinados momentos é necessário exibir tanto caracteres japoneses e caracteres latinos em uma mesma página. Para solucionar esses e outros problemas, o padrão Unicode foi desenvolvido.

Geralmente a tabela UTF-8 soluciona os mais comuns problemas de internacionalização, mas existem outras tabelas UTF para evitar novos erros.

Mãos à massa

Acredito que muitos desenvolvedores iniciantes ainda não repararam que no momento em que vamos salvar um arquivo editado, em quase todos os programas, aparece uma caixa de diálogo que solicita, não somente o nome do arquivo, mas também a codificação a ser utilizada.

Bloco de notas - Salvando arquivo

Bloco de notas - Salvando arquivo

O campo codificação permite a seleção do conjunto de caracteres que o programa utilizará para gravar os arquivos que somente poderão ser corretamente lidos se a mesma codificação for utilizada pelo programa que for efetuar a leitura.

Quando estamos tratando de uma página HTML, o programa que efetua a leitura do arquivo HTML é o navegador. O navegador pode receber o arquivo em qualquer codificação. Para indicar ao navegador qual codificação ele deve utilizar é necessário incluir a instrução a seguir dentro do elemento HEAD da página:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Deve-se ficar atento ainda aos servidores web que podem entregar as páginas com a codificação dos próprios arquivos ou com um padrão definido em sua configuração.

Quando trabalhamos com a recuperação de dados do banco de dados devemos sempre buscar estes dados com o mesmo conjunto de caracteres utilizado em sua página. Em PHP, por exemplo, caso tenha recuperado uma informação do banco de dados com o conjunto de caracteres ISO-8859-1 e deseje converter para UTF-8, utilize a função utf8_encode. E no momento de gravar os dados no banco também não esqueça de efetuar a devida conversão.

Um bom projeto geralmente tem um conjunto de caracteres padrão definido e todos os detalhes da criação das páginas são efetuados tomando em consideração este conjunto de caracteres então vai uma dica: configure sempre o mesmo conjunto de caracteres para o seu programa de criação das páginas, no HEAD da página e no banco de dados.

Mais informações

Quem quiser saber sobre codificação outras informações sobre codificação siga os links no texto de Bruno Schneider utilizado nas aulas da Universidade Federal de Lavras.

About "" Has 2042 Posts

23 anos, Carioca, Criador do Portal Zoom Digital, mantém desde a epoca que possuia formato de blog, Podcaster oficial do Zoom Cast. Amante por todo tipo de tecnologia e formado como técnico de informática.

6 Responses to “[HTML] Codificação”

  1. Marcos disse:

    Oh mundo cruel,

    Pq existirem tantas codificações meu Deus?!

    Brincadeira, sei o quanto são úteis, mas dão trabalho hein…

    Se você nunca teve um probleminha desse, se prepara que em seu próximo script ele vai aparecer…rsrsrs

    Marcos

    []’s

  2. rsrs Comentário do Marcos está corretisimo é dificil este tipo de problema nunca ter acontecido na verdade é bem frequente.

    E nem preciso falar da qualidade da postagem do Cassio né?

    Ficou otimo.. Parabens amigo! E todos nós agradecemos o conteúdo disponibilizado.

  3. Cassio Santos disse:

    Marcos,

    Realmente é uma dúvida muito cruel. Tomemos pois todos nós muito cuidado!

    Philipe,

    Muito obrigado pelo Prestígio estava delicioso, mas da próxima vez manda um Chokito! rsrsrsrsrsrs

    Obrigado mesmo, de coração, pela consideração. Isso nos anima a colaborar mais.

  4. Guilherme Albuquerque disse:

    cara, nem terminei de ler, mais ja esta muito louco brow.
    Parabéns!

  5. […] Leia mais deste post no blog de origem: Clique aqui e prestigie o autor […]

  6. Noel Rocha disse:

    Legal… Mandou bem cassio…

    Quando eu necessito migrar banco de dados de charsets diferentes, na hora de enviar o dump eu adiciono na linha do mysql o parametro –default-character-set=latin2 se o banco de origem for latin2 e se o banco de origem for utf8 eu adiciono o parametro –default-character-set=utf8.

    Outra coisa, em alguns casos só dá para resolver com o comando iconv.

    Valeu pessoal. O blog está muito showw 😉 Vamos que vamos….

    []’s
    Noel Rocha

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *