descobrir se é utf-8
Posted on ter 19 outubro 2010 in HowTo
Um colega meu estava com a necessidade de descobrir, no Linux, qual a codificação (encoding) de um arquivo. Afinal, é uma droga quando o servidor está numa codificação e o arquivo em outra. Certamente você já se deparou com alguma página na Internet em que uma palavra, por exemplo: "comunicação", se transforma em algo como "comunicaC&aÂ#%o" ou coisa parecida...
o pulo do gato é esta linha, via shell
file $1 --mime-encoding | cut -d":" -f2 | sed -e 's/ //g'
aí dá até para montar um script, seja para testar ou mesmo evitar uma situação:
#!/bin/bash
tipo=$(file $1 --mime-encoding | cut -d":" -f2 | sed -e 's/ //g')
if [ $tipo != 'utf-8' ]; then
# echo "nao eh utf-8"
exit 1
else
# echo "eh utf-8"
exit 0
fi
porém arquivo sem caracteres como 'ç' ou 'á' , por exemplo um texto sem acentuação , sempre será identificado como 'us-ascii'.
Ah, em PHP existe a função mb_detect_encoding para realizar este teste com strings...
http://www.php.net/manual/en/function.mb-detect-encoding.php