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.