UTF-8 8-bitlik bir Unicode dönüşüm formatıdır (İng: Unicode Transformation Format ‘ın kısaltması). Unicode karakterlerini değişken uzunluklu bayt guruplarıyla kodlamakta kullanılır. Rob Pike ve Ken Thompson tarafından geliştirilmiştir.
UTF-8 kodlaması Unicode karakterlerini 1-6 byte uzunluğunda diziler olarak kodlar. ASCII kodlaması içinde 0-127 arasında kalan karakterler aynen kendi kodları ile kullanılır, diğerleri ise byte dizileri haline gelir.
UTF-8 Özellikleri
Evrensel kodlama ile aynı sayfada farklı lisanları göstermek mümkün olabilmektedir. Ayrıca özel hazırlanmış klavyeler ile matematiksel ifadeleri yazmak da mümkün. Bütün bu farklı karakterler UTF-8 sayesinde aynı sayfada görüntülenebilmektedir. Eski stil kodlama ile türkçe karakterlerin – aslında latin alfabesinde olmayan ya da özel işaretli harflerin de – gösterimi için oldukça karışık olan harf ve rakam dizgileri kullanmak gerekiyordu. Mesela Ş harfini yazmak için Ş küçük ş içinse ş yazmak gibi.
UTF kullanarak 1 milyondan fazla karakter kodlanılabilinmektedir. Sıklıkla kullanılan 65536 karakterin kodlaması bu 1 milyondan fazla kodlamada ilk sıralarda yer almaktadır.
UTF-8 Örnekler
A = 00000000 010000012, yani sağ baştan sıfırdan başlayarak sayıldığıda 2′nin katları şeklinde 20 ve 26′yı toplayarak 65 sayısını elde ediyoruz. Windows için ALT-tuşuna basılı tutarak nümerik klavyeden 65 yazdığı zaman A harfı çıkar.
天 = 0×59 0×298 = 01011001 001010012 = ALT-tuşu + 22825
⇔ = 0×21 0xd38 = 00100001 110100112 = ALT-tuşu + 1587
α = 0×03 0xb18 = 00000011 101100012 = ALT-tuşu + 945
Veritabanı ve Programlamada UTF-8′in yeri:
Programlama ve Veri depolamada UTF-8‘in yeri oldukça önemlidir.
UTF-8′in çeşitleri vardır, bunlar temel olarak:
utf8_bin : Unicode – Çok Dilli (Universal Code – Unicode) – İkili (Binary)
utf8_czech_ci : Çekçe – Büyük ve Küçük harfe duyarsız
utf8_danish_ci : Danca – Büyük ve Küçük harfe duyarsız
utf8_esperanto_ci : Esperanto – Büyük ve Küçük harfe duyarsız
utf8_estonian_ci : Estçe – Büyük ve Küçük harfe duyarsız
utf8_general_ci : Unicode (çokdilli) – Büyük ve Küçük harfe duyarsız
utf8_hungarian_ci : Macarca – Büyük ve Küçük harfe duyarsız
utf8_icelandic_ci : İzlandaca – Büyük ve Küçük harfe duyarsız
utf8_latvian_ci : Litvanyaca – Büyük ve Küçük harfe duyarsız
utf8_lithuanian_ci : Litvanyaca – Büyük ve Küçük harfe duyarsız
utf8_persian_ci : Farsça – Büyük ve Küçük harfe duyarsız
utf8_polish_ci : Polonyaca – Büyük ve Küçük harfe duyarsız
utf8_roman_ci : Batı Avrupa – Büyük ve Küçük harfe duyarsız
utf8_romanian_ci : Romence – Büyük ve Küçük harfe duyarsız
utf8_slovak_ci : Slovakça – Büyük ve Küçük harfe duyarsız
utf8_slovenian_ci : Slovence – Büyük ve Küçük harfe duyarsız
utf8_spanish2_ci : Geleneksel İspanyolca – Büyük ve Küçük harfe duyarsız
utf8_spanish_ci : İspanyolca – Büyük ve Küçük harfe duyarsız
utf8_swedish_ci : İsveççe – Büyük ve Küçük harfe duyarsız
utf8_turkish_ci : Türkçe – Büyük ve Küçük harfe duyarsız
utf8_unicode_ci : Unicode – Çok Dilli (Universal Code – Unicode) Büyük ve Küçük harfe duyarsız
21 çeşittir.
Eğer Türkçe karakterler ve bunun yanında birkaç dilin karakterlerini kullanmayı düşünüyorsanız UTF-8 Unicode (utf8_unicode_ci) tam sizin için.
Eğer UTF-8 Unicode kullanırsanız, artık yazılım geliştirme ortamınızın, veritabanınızın ve html kodlarınızın karakter setlerinin farklılığından kaynaklanan görüntüleme problemlerinden kurtulacaksınız.
Şimdi size birkaç yazılım geliştirme ortamında UTF-8 ayarının yapılabilmesi için izlemeniz gereken yönergeleri anlatacağım:
Zend Development Environment:
Araçlar (Tools) -> Tercihler… (Preferences…) -> Masaüstü (Desktop) tabının içinde Kodlama (Encoding) seçeneğini UTF-8 olarak ayarlamanız yeterli.
Notepad :
Dosya (File, Save) kayıt penceresinde, Kodlama (Encoding) seçeneğini UTF8 olarak ayarlamanız yeterli.
Notepad++ :
Ayarlar (Settings) -> Tercihler (Preferences) -> Yeni bir Belge (New a Document) -> Encoding bölümünden UTF-8 seçmeniz yeterli.
Dreamweaver :
Düzen (Edit) -> Tercihler (Preferences) -> Fonts (Yazı tipleri) -> Unicode ve ayrıca Yeni (New Document) bölümünden Unicode’u seçmeniz yeterli.
***
Eğer Türkçe karakterler ve bunun yanında birkaç dilin karakterlerini kullanmayı düşünüyorsanız UTF-8 Unicode (utf8_unicode_ci) size önerilir.
Utf-8 Sorun ve Çözümleri
Utf-8, Google’ ın en çok tercih ettiği karakter dili olması ve SEO,Pretty Url gibi optimizasyon araçlarının desteklediği karakter grubu olması nedeniyle webmasterlar bu dili tercih ederler.Fakat bu dil SMF scriptinde “ISO-8859-9″ karakter dilini kullananlar Türkçe karakter sorunları yaşamaktadır.Bu sorunlar nelerdir ve çözümleri nelerdir:
1- Utf-8 i sorunsuz şekilde kurabilmek(Modifikasyonlar bozulmadan):
Admin/Forum Bakımından “Veri ve veritabanını utf-8 e dönüştür” seçeneği ile önce veritabanı utf-8 e dönüştürülür.Daha sonra gerekli utf-8 dosyaları default ya da kullandığınız temanın languages klasörüne atılır.Modifikasyonları bozmamak için de:
Mesela “Modification.turkish.php” dosyasında modifikasyonların dil değişkenleri yer alıyorsa bu dosya Notepad dosyasında açılarak Farklı Kaydet seçeneği seçilir ve kodlama Utf-8 olarak işaretlenerek dosya ismi sonuna -utf8 yazılarak kaydedilir.Daha sonra languages klasöründekiyle yer değiştirilir.(mesela Modification.turkish-utf8.php gibi) Şayet hata alırsanız “ayarlari_onar.php yi çalıştırın ve dil kısmına “turkish-utf8” yazın.Ayrıca Settings.php dosyanızda
?>
kodundan evvel
$db_character_set = ‘iso-8859-9′;
diye bir karakter seti kodu varsa silin.Forum Seçenekleri/Sunucu Ayarlarından
da dil seçeneklerinden “turkish-utf8” i işaretleyin.
Bu işlemlerin en sonunda kategori ve forum başlığınızdaki isimler de (şğ,ç…) gibi karakterler ve ondan sonraki karakterler silindiği için tekrar yazmanız gerekiyor
2- Utf-8 i sorunsuz ve güvenli bir yoldan kaldırma
phpmyadmin den tablolarınızı tek tek seçerek “İşlemler” seçeneğinden karakter karşılaştırmasını değiştirip,languages klasörünüzden utf 8 dil dosyalarını silerek kaldırabilirsiniz.
Türkçe karakter Desteği UTF-8
Bir cok kisinin biligi gibi utf kodlama yapisinda turkce karakterlerin sekli asagida verdigim tablodaki gibidir, yani utf-8 karakter setini kullandiginiz bir sayfada turkce karakterler duzgun cikmayacaktir, ve bozuk gorunerek sayfanizi bakilamaz hala getirecektir, isde burda asagidaki tablodaki turkce karakterlerin altigi utf-8 karakterini kullandiginizda normal sayfaya bakarkan turkce karakterler duzgun sekilde gorunecektir..
Bu durum şöyle açıklanabilir:
“latin_1,latin_5″ gibi ükle dil kodlarında,diğer ülkelerde ki dili standt hale getirebilmek için,o dil de geçen karakterlerin html karşılıklarını yazmak
gerekir.Bunlar:
UTF-8 Türkçe karakter seti tablosu
Ü <=> Ü Ş <=> ÅŸ Ğ <=> ÄŸ Ç <=> Ç İ <=> İ Ö <=> Ö ü <=> ü ş <=> ÅŸ ğ <=> ÄŸ ç <=> ç ı <=> ı ö <=> ö
Yukaridaki ornege bakarak turkce karakter iceren bir kelime yazmaya calistigimizda, asagidaki gibi yazmamiz gerekecektir.
Aşkım ========> AÅŸkım
Web sayfasinda gorunusu
Aùk^m ======== Aşkım
yukaridaki ornekte gordugunuz gibi turkce karakter iceren bir kelimeyi utf-8 turkce karakter karsiliklariyla yazmamiz gerekli..
ama bu problemi çok kolay da halledebilirsiniz. notepad2 yi indirin ve turkce karakterlerin oldugu dosyamizi bu programla aciniz
dosyayı açtıktan sonra menülerden file>encoding>UTF-8 sectiginizde yazilarinizdaki karakterler artik utf-8 formatinda olacaktir..
Utf-8 charset karakter dil setiyle,bu karşılıkları yazmaya gerek kalmadan kendi dilinizde kullanılan karakterleri bütün dil karakter setleriyle ortak hale getirebilirsiniz.
Kaynak Listesi ve derleme
Bir kısım: Sinan ANDIRMAN
Bir kısım: wordpress-tr
Bir kısım: Kuaza.org
Bir kısım: Selçuk Kılıç
Bir kısım: frm.ekshi.net