UTF-8 konvertering
Om man har många text-filer på sin webbplats (som finns på ett Linux-system) som behöver konverteras från någon teckenkodning till UTF-8 så kan man använda följande knep:
- Gör backup
-
Lista alla text-filer som har teckenkod
unknown-8bit:encoding_find_all_bad.sh <katalognamn> -
Hantera dessa text-filer manuellt med en editor som tex Sublime Text» så de får en teckenkodning som inte är
unknown-8bit -
Konvertera alla text-filer till UTF-8:
encoding_change_all.sh <katalognamn> - Chmodda alla körbara serversidesprogram 700
- Se till att serversidesprogrammen (tex PHP eller CGI) sänder ut på formatet UTF-8:
#!/usr/local/bin/perl
print header('text/plain;charset=UTF-8');
- Se till att alla HTML-sidor anger format UTF-8:
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8"/>
Programmet encoding_find_all_bad.sh:
for f in ./$1/*
do
x2="$(file --mime-type "$f")"
x21=$(echo ${x2} | cut -d ' ' -f 2)
x3="$(file --mime-encoding "$f")"
x31=$(echo ${x3} | cut -d ' ' -f 2)
if [ $x31 = "unknown-8bit" ]; then
echo "$f"
fi
# Kolla om katalog
if [ $x21 = "inode/directory" ]; then
sh ./encoding_find_all_bad.sh $f
fi
done
Programmet encoding_change_all.sh:
for f in ./$1/*
do
echo "PATH: $f"
#x1="$(file -i "$f")"
#echo "I: ${x1}"
x2="$(file --mime-type "$f")"
x21=$(echo ${x2} | cut -d ' ' -f 2)
echo "MIME-TYPE: ${x21}"
x211=$(echo ${x21} | cut -d '/' -f 1)
echo "MIME-TYPE MAIN: ${x211}"
x3="$(file --mime-encoding "$f")"
x31=$(echo ${x3} | cut -d ' ' -f 2)
echo "MIME-ENCODING: ${x31}"
# Kolla om ska ändra kodning
if [ $x211 = "text" ]; then
echo "TEXT FILE: Yes"
if [ $x31 = "unknown-8bit" ]; then
echo "MIME-ENCODING NEW: No change because of unknown-8bit"
else
cat $f | iconv -f $x31 -t utf8 > $f.tmp
mv $f.tmp $f
x4="$(file --mime-encoding "$f")"
x41=$(echo ${x4} | cut -d ' ' -f 2)
echo "MIME-ENCODING NEW: ${x41}"
fi
else
echo "TEXT FILE: No"
fi
# Kolla om katalog
if [ $x21 = "inode/directory" ]; then
echo "DIRECTORY: Yes"
echo
sh ./encoding_change_all.sh $f
else
echo "DIRECTORY: No"
fi
echo
done
Programmen stöder inte filnamn med mellanslag.
