Karakter Kodlaması Değiştiren Script

5 12 2007

Script; parametre olarak verilen dosyanın karakter kodlamasını UTF8 ile ISO-8859-9 arasında değiştirmeyi sağlar. Bir ara film altyazıları ile yaşadığım sorunlar yüzünden yazmıştım. Artık pek de ihtiyaç duymuyorum :) Birilerinin işine yararsa ne mutlu.

 

#!/bin/bash# ADI="Karakter"
# TAM ADI="Karakter Kodlaması Dönüştürme Betiği"
# YAZAN="Aydın Tarık ZENGİN"
# LİSANS="GPL"
#
#Değişkenleri tanımla
IN_CHAR=”UTF-8″
OUT_CHAR=”ISO_8859-9″
FILE=$1
#Fonksiyonları tanımla
#ISO dan Unikoda dönüştürecek fonksiyon
function I2U() {
iconv -f $OUT_CHAR -t $IN_CHAR $1 -o $1-utf
echo “$1 ($OUT_CHAR) dosyası $1-utf ($IN_CHAR) olarak kaydedildi”
}
#
# Unikoddan ISOya dönüştürecek fonksiyon
function U2I() {
iconv -t $OUT_CHAR -f $IN_CHAR $1 -o $1-iso
echo “$1 ($IN_CHAR) dosyası $1-iso ($OUT_CHAR) olarak kaydedildi”
}
#
#Girilen parametre dizin ise kabul etmeyecek. dosya ise devam edecek
if ( test -d “$FILE” ) then
echo  “Bu betik dizinler üstünde işlem yapamaz. Parametre olarak bir dosya verin”
exit
elif ( test -f “$FILE” ) then
echo  “Bu bir dosya. Herşey yolunda”
fi
#ekranı temizle, menü oluştur
clear
#
echo “Dönüştürmek isteğiniz karakter kodlamasının numarasını girin :”
echo “——————————————–”
echo “1 : $OUT_CHAR’den $IN_CHAR’e”
echo “2 : $IN_CHAR’den $OUT_CHAR’e”
#girilen seçeneği secenek değişkenine ata
read secenek
#case ile secenek değişkeninin değerine göre işlemi gerçekleştirecek fonksiyon çağrılır.
case $secenek in
1)I2U $FILE
;;
2)U2I $FILE
;;
*)
echo “Geçerli bir seçenek girin”;;
esac
exit

Çalışması hakkında da aşağıdaki komut dizisi yeterli açıklamayı sağlayacaktır;

 

smacker@tux ~/Temporary/temp/Convmv Scriptim $ echo “ışçöğü” > dosya1
smacker@tux ~/Temporary/temp/Convmv Scriptim $ file dosya1
dosya1: UTF-8 Unicode text
smacker@tux ~/Temporary/temp/Convmv Scriptim $ ./convert.sh dosya1
Bu bir dosya. Herşey yolunda
Dönüştürmek isteğiniz karakter kodlamasının numarasını girin :
——————————————–
1 : ISO_8859-9′den UTF-8′e
2 : UTF-8′den ISO_8859-9′e
2
dosya1 (UTF- 8) dosyası dosya1-iso (ISO_8859-9) olarak kaydedildi
smacker@tux ~/Temporary/temp/Convmv Scriptim $ file dosya1-iso
dosya1-iso: ISO-8859 text
smacker@tux ~/Temporary/temp/Convmv Scriptim $ ./convert.sh dosya1-iso
Bu bir dosya. Herşey yolunda
Dönüştürmek isteğiniz karakter kodlamasının numarasını girin :
——————————————–
1 : ISO_8859-9′den UTF-8′e
2 : UTF-8′den ISO_8859-9′e
1
dosya1-iso (ISO_8859-9) dosyası dosya1-iso-utf (UTF- 8) olarak kaydedildi
smacker@tux ~/Temporary/temp/Convmv Scriptim $ file dosya1-iso-utf
dosya1-iso-utf: UTF-8 Unicode text
smacker@tux ~/Temporary/temp/Convmv Scriptim $ cat dosya1
ışçöğü
smacker@tux ~/Temporary/temp/Convmv Scriptim $ cat dosya1-iso
������
smacker@tux ~/Temporary/temp/Convmv Scriptim $ cat dosya1-iso-utf
ışçöğü

Kabukta UTF kullandığım için ISO olan dosyanın içeriği bozuk görülüyor. Zaten olay da burada :)


Actions

Information

Leave a comment

You can use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>