sábado, 2 de fevereiro de 2013

Exibição dos caracteres especiais para HTML

O fato de desenvolver textos HTML tanto para Linux como para Windows tem causado o incoveniente de exibir os caracteres acentuados de forma errada porque os sistemas operacionais usam codificações distintas.

A melhor forma de adequar a ambas as situações é substituir os caracteres problemáticos por códigos que ao serem interpretados pelo navegador são traduzidos pela combinação de vogais acentuadas ou cedilha.

O código abaixo faz a substituição global destes caracteres. Desta forma, basta redigir o texto normalmente e após a execução do script o texto está pronto para ser visualizado por qualquer navegador.

Observação: É preciso juntar o "&" com o que vem em seguida, pois se fosse feito no editor seria interpretado e desta forma não seria exibido o código HTML.

#/bin/bash
# Fonte dos caracteres especiais: http://www.lsi.usp.br/~help/html/iso.html

if [ $# != 1 ]
  then
    echo Digite $0 arq
    exit
  else
    sed 's/Á/\& Aacute;/g' $1 > $$
    sed 's/á/\& aacute;/g' $$ > $1
    sed 's/Â/\& Acirc;/g' $1 > $$
    sed 's/â/\& acirc;/g' $$ > $1
    sed 's/À/\& Agrave;/g' $1 > $$
    sed 's/à/\& agrave;/g' $$ > $1
    sed 's/Â/\& Atilde;/g' $1 > $$
    sed 's/ã/\& atilde;/g' $$ > $1

    sed 's/É/\& Eacute;/g' $1 > $$
    sed 's/é/\& eacute;/g' $$ > $1
    sed 's/Ê/\& Ecirc;/g' $1 > $$
    sed 's/ê/\& ecirc;/g' $$ > $1

    sed 's/Í/\& Iacute;/g' $1 > $$
    sed 's/í/\& iacute;/g' $$ > $1

    sed 's/Ó/\& Oacute;/g' $1 > $$
    sed 's/ó/\& oacute;/g' $$ > $1
    sed 's/Ô/\& Ocirc;/g' $1 > $$
    sed 's/ô/\& ocirc;/g' $$ > $1
    sed 's/Õ/\& Otilde;/g' $1 > $$
    sed 's/õ/\& otilde;/g' $$ > $1

    sed 's/Ú/\& Uacute;/g' $1 > $$
    sed 's/ú/\& uacute;/g' $$ > $1

    sed 's/ç/\& ccedil;/g' $1 > $$

    sed 's/>/\&# 62;/g' $$ > $1
    sed 's/</\&# 60;/g' $1 > $$
    
fi
mv -v $$ $1