Linux Sistemlerde Dosyaların Encoding’lerinin Değiştirilmesi

Özellikle Windows ortamında oluşturulan dosyalar genellikle Windows Türkçe ya da ISO-8859-9 formatında kodlanmış oluyorlar. Ancak çoklu dil aileleriyle çalışmaya başladığınızda bunun bir kabusa dönüştüğünü farketmek zor değil. Linux’da kısa yoldan bir dosyanın encode’unu değiştirmek için;

tcs -f 8859-9 -t utf dosyaadi.php > yenidosyaadi.php

komutu yeterli oluyor. Tcs direkt olarak çeviri yaptığı için içeriğini yeni bir dosya olarak kaydedebiliyoruz.

Bu işlemi otomatikleştirmek için şöyle bir script yazdık. Bu script sayesinde bir klasör içindeki bütün önemli uzantılara sahip dosyaların encodingini utf-8’e çevirebilirsiniz.

#!/bin/sh
CMDLN_ARGS=”$@” # Command line arguments for this script
export CMDLN_ARGS
# Run this script as root if not already.
chk_root () {
if [ ! $( id -u ) -eq 0 ]; then
echo “Please enter your password.”
exec sudo su -c “${0} ${CMDLN_ARGS}” # Call this prog as root
exit ${?}  # sice we’re ‘execing’ above, we wont reach this exit
# unless something goes wrong.
fi
}
chk_root
files=find $1 -regex ".*(php|html|tpl|js|css|htm)$"
suffix=eval date +%s
tar -zcvf backup-$suffix.tar.gz –exclude=’*.tar.gz’ $1
for xx in $files
do
mv $xx $xx.bak
echo backup to: $xx.bak
tcs -f 8859-9 -t utf $xx.bak > $xx
rm $xx.bak
echo $xx converted
done

#!/bin/sh

CMDLN_ARGS=”$@” # Command line arguments for this script

export CMDLN_ARGS

# Run this script as root if not already.

chk_root () {

if [ ! $( id -u ) -eq 0 ]; then

echo “Please enter your password.”

exec sudo su -c “${0} ${CMDLN_ARGS}” # Call this prog as root

exit ${?}  # sice we’re ‘execing’ above, we wont reach this exit

# unless something goes wrong.

fi

}

chk_root

files=find $1 -regex ".*(php|html|tpl|js|css|htm)$"

suffix=eval date +%s

tar -zcvf backup-$suffix.tar.gz –exclude=’*.tar.gz’ $1

for xx in $files

do

mv $xx $xx.bak

echo backup to: $xx.bak

tcs -f 8859-9 -t utf $xx.bak > $xx

rm $xx.bak

echo $xx converted

done

Yukarıdaki kodu convertfiles olarak kaydettikten sonra chmod +x convertfiles ile çalıştırılabilir hale getirilmesi gerekir.
Bu komuttan sonra ./convertfiles <KLASÖR ADI> komutu ile istediğiniz klasörün içindeki php, html, js vb. dosyaların encodingi iso-8859-9’den UTF-8’e dönüşmüş olacaktır.
Not: ek olarak bulunduğu klasör içine proje dosyalarını da yedeklemektedir.
Not 2: İşleme başlamadan önce tüm dosyalarınızı manuel olarak yedeklemenizi tavsiye ederiz.
0saves
Eğer bu yazıyı beğendiyseniz, lütfen yorum bırakın veya RSS yayınına üye olarak gelecek yazılarımızı takip edin.