Linux'ta Dosyaları UTF-8 Kodlamasına Dönüştürme
Bu kılavuzda, hangi karakter kodlamasının olduğunu açıklayacağız ve komut satırı aracını kullanarak dosyaları bir karakter kodlamasından diğerine dönüştürmenin birkaç örneğini ele alacağız. Ardından son olarak, herhangi bir karakter kümesinden (karakter kümesi) çeşitli dosyaları Linux'ta UTF-8 kodlamasına nasıl dönüştüreceğimize bakacağız.
Muhtemelen aklınızdan geçirmiş olabileceğiniz gibi, bir bilgisayar harfleri, sayıları veya biz insanlar olarak bitler dışında algılayabildiğimiz herhangi bir şeyi anlamaz veya saklamaz. Bir bitin yalnızca iki olası değeri vardır; bunlar ya 0
ya da 1
, true
ya da false
, evet
veya hayır
. Harfler, sayılar, resimler gibi diğer her şeyin bir bilgisayarın işleyebilmesi için bitler halinde temsil edilmesi gerekir.
Basit bir ifadeyle, karakter kodlama, bilgisayara ham sıfırları ve birleri gerçek karakterlere nasıl yorumlayacağı konusunda bilgi vermenin bir yoludur; burada bir karakter, bir sayı kümesiyle temsil edilir. Bir dosyaya metin yazdığımızda, oluşturduğumuz kelimeler ve cümleler farklı karakterlerden oluşturulur ve karakterler bir karakter kümesi halinde düzenlenir.
Diğerlerinin yanı sıra ASCII, ANSI, Unicode gibi çeşitli kodlama şemaları mevcuttur. Aşağıda ASCII kodlamasının bir örneği verilmiştir.
Character bits
A 01000001
B 01000010
Linux'ta iconv komut satırı aracı, metni bir kodlama biçiminden diğerine dönüştürmek için kullanılır.
file komutunu kullanarak, mime türünün yazdırılmasını sağlayan -i
veya --mime
işaretini kullanarak bir dosyanın kodlamasını kontrol edebilirsiniz. aşağıdaki örneklerde olduğu gibi dize:
file -i Car.java
file -i CarDriver.java
iconv kullanımına ilişkin sözdizimi aşağıdaki gibidir:
iconv option
iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
Burada -f
veya --from-code
, giriş kodlaması anlamına gelir ve -t
veya --to-encoding
şunu belirtir: çıktı kodlaması.
Bilinen tüm kodlanmış karakter kümelerini listelemek için aşağıdaki komutu çalıştırın:
iconv -l
Dosyaları UTF-8'den ASCII Kodlamasına Dönüştürme
Daha sonra, bir kodlama şemasından diğerine nasıl dönüştürüleceğini öğreneceğiz. Aşağıdaki komut ISO-8859-1 kodlamasını UTF-8 kodlamasına dönüştürür.
Şu karakterleri içeren input.file
adlı bir dosya düşünün:
� � � �
Dosyadaki karakterlerin kodlamasını kontrol ederek başlayalım ve ardından dosya içeriğini görüntüleyelim. Yakından bakıldığında tüm karakterleri ASCII kodlamasına dönüştürebiliriz.
iconv komutunu çalıştırdıktan sonra çıktı dosyasının içeriğini ve karakterlerin yeni kodlamasını aşağıdaki gibi kontrol ediyoruz.
file -i input.file
cat input.file
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
cat out.file
file -i out.file
Not: //IGNORE
dizesinin to-encoding'e eklenmesi durumunda dönüştürülemeyen karakterler ve bir hata görüntülenir dönüşümden sonra.
Yine, yukarıdaki örnekte olduğu gibi (ASCII//TRANSLIT) to-encoding'e //TRANSLIT
dizesinin eklendiğini varsayarsak, dönüştürülen karakterler gerektiğinde ve mümkünse harf çevirisi yapılır. . Bu, bir karakterin hedef karakter setinde temsil edilememesi durumunda, bir veya daha fazla benzer görünümlü karakter aracılığıyla ona yaklaşılabileceği anlamına gelir.
Sonuç olarak, harf çevirisi yapılamayan ve hedef karakter kümesinde olmayan herhangi bir karakter, çıktıda (?)
soru işaretiyle değiştirilir.
Birden Çok Dosyayı UTF-8 Kodlamasına Dönüştürün
Ana konumuza dönersek, bir dizindeki birden fazla dosyayı veya tüm dosyaları UTF-8 kodlamasına dönüştürmek için encoding.sh adında küçük bir kabuk betiğini aşağıdaki gibi yazabilirsiniz:
#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv -f $FROM_ENCODING -t $TO_ENCODING"
#loop to convert multiple files
for file in *.txt; do
$CONVERT "$file" -o "${file%.txt}.utf8.converted"
done
exit 0
Dosyayı kaydedin ve ardından komut dosyasını yürütülebilir hale getirin. Dosyalarınızın (*.txt
) bulunduğu dizinden çalıştırın.
chmod +x encoding.sh
./encoding.sh
Önemli: Bu komut dosyasını, birden fazla dosyanın belirli bir kodlamadan diğerine genel dönüştürülmesi için de kullanabilirsiniz; FROM_ENCODING
değerleriyle oynamanız yeterlidir. ve TO_ENCODING
değişkeni, "$ {file%.txt}.utf8.converted"
çıktı dosyası adını unutmadan.
Daha fazla bilgi için iconv kılavuz sayfasına bakın.
man iconv
Bu kılavuzu özetlemek gerekirse, kodlamayı anlamak ve bir karakter kodlama şemasından diğerine nasıl dönüştürüleceğini anlamak, her bilgisayar kullanıcısı için, konu metinle uğraşırken programcılar için de gerekli bir bilgidir.
Son olarak her türlü soru veya geri bildiriminiz için aşağıdaki yorum bölümünü kullanarak bizimle iletişime geçebilirsiniz.