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.