La codifica UTF-8 è ormai una codifica molto diffusa nel web, soprattutto in quei contesti in cui si ha a che fare con lingue diverse e con caratteri diversi (latini, cinesi, arabi...). Per garantire la corretta visualizzazione di caratteri appartenenti a linguaggi diversi all'interno di uno stesso documento XML (come pure di una pagina web), è necessario che il documento stesso sia codificato UTF-8. In un contesto eterogeneo, è possibile però che esistano documento con diversi encoding: da qui la necessità di convertire tali documenti, in modo da avere un repository XML interamente UTF-8.
Linux mette a disposizione il comando iconv, che richiede in input il documento, la codifica sorgente e quella target e restituisce il file XML convertito. L'unico problema è che questo comando non modifica l'intestazione dei files XML, perciò il nome della codifica usata va modificato manualmente, oppure col comando sed (non è l'unica soluzione, ad esempio si può usare awk).
Il seguente script prende tutti i files XML nidificati nella directory corrente: supponendo che siano tutti codificati ISO-8859-1, li trasforma in UTF-8:
# all XML files
LIST=`find . -name "*.xml"`
# scan files
for file in $LIST; do
iconv -c -f ISO-8859-1 -t UTF-8 $file -o
$file."utf8"
if [ "$?" -ne 0 ]; then
echo Comando fallito $file
else
mv $file."utf8" $file
sed "s/ISO-8859-1/utf-8/g"
$file > tmp
mv tmp $file
fi
done