İnsanoğlu uzaya çıkadursun biz hâlâ Ankara'dan İstanbul'a daha çabuk nasıl gideceğimizin plânlarını yaparız hep. Teknolojiyi, gelişmeleri bir adım arkada takip ederiz. Neyse, gelmek istediğim nokta şu. Bugün web sitelerinin karakter kodlamaları artık yeni nesil karakter desteği ile yani UTF-8 ile yapılıyor. Biz ise hâlen eski usül devam ediyoruz. Latin1, Latin5 vd.
Bilmeyen okuyucular için biraz izah edeyim. Bir sitenin karakter seti, site hangi dilde yayın yapacak ise o dilin alfabesindeki seslerden oluşan bir sestir. Bugün türkçede bulunan "çığöşü" harfleri birçok dilde bulunmamaktadır. Haliyle bu harflerin internette sorunsuz kullanılabilmesi için Türkçeye özgü bir karakter seti yani Latin5 geliştirilmiştir. Eğer sitenizi Latin5 karakter seti kullanarak oluşturmadıysanız ileride bu sizin için büyük problem doğuracaktır. Yani sunucu değişkliğinde ya da sitenizin yedeğini almak istediğinizde Türkçe karakterleri bozuk gösterecektir. Bu nedenle en akıllı seçim Latin5 'tir. UTF - 8 dediğimiz şey ise, yeni nesil bir karakter setidir. Bu setin içerisinde tüm dillere ait karakterler bulunmaktadır. Yani adamlar bütün dillerin karakterlerini alıp tek dosya içerisinde toplamıştır. Eğer uluslararası platformda yayın yapıyorsanız, yani sitenizde İngiltere'den ya da Japonya'dan birileri giriyorsa ve siz Latin5 kullanıyorsanız o adamların bilgisayarında Türkçe karakterler bozuk gösterecektir. Bu nedenle uluslararası yayın yapan sitelerde UTF - 8 karakter seti tercih edilir.
Şimdi edebyahu.com 'u yaparken ihtiyaç duyduğum bir olay Latin1 olan eski içeriğimi Latin5 'e aktarmaktı. Yeni hazırladığım sistem Latin5 olduğu için eski içerikler (yazılar, şiirler vs.) yeni sisteme uyumsuz oluyor be Türkçe karakterlerin yerine "?" çıkıyordu. Ben de yazdığım ufak bir betik(script) ile Latin1 içeriğimi otomatik olarak Latin5'e aktardım. Teknik bi şey daha söyleyeyim: Siz phpmyadmin'den işlemler sekmesinden Latin1 olan tablonuzun karşılaştırma değerini Latin5 olarak seçebilirsiniz. Yeni eklenen içerikler öyle eklenecektir .Ancak eski içerikler yine bozuk duracaktır. Bu nedenle bu yazdığım betik sayesinde eski içeriklerinizi sorunsuz bir şekilde Latin5 'e aktarabileceksiniz.
Betiği aşağıda verdiğim gibi dilerseniz şuradan da indirebilirsiniz. Burada bahsetmem gereken sanırım ufak bir iki bir şey var. Zira daha evvel mysql komutları ile az çok haşir neşir olmuş birisi bunu rahatlıkla anlayacaktır.
test2 isimli tablodan test isimli tabloya verileri aktaracağız. Bu iki tablonun yapısı aynı olmasına rağmen karakter setleri farklı. test2 isimli tablomuzun karakter seti Latin1, test2 isimli tablomuzun karakter seti ise latin2. Bunu yapmak çok kolay. Elinizde verinizi aktarmak istediğiniz tabloyu yedeklerken sadece yapısını yedekleyin. Zaten tablo yapısını size verirken karakter setiri şu şekilde verecektir: CHARSET=latin1 . Sizin tek yapmanız gereken CHARSET=latin1 'i CHARSET=latin5 yapmak ve tablonun adını değiştirip o tabloyu sorgulatmak. Aşağıdaki kodlara tablonuzdaki alanları kendiniz ekleyebilirsiniz. Dilerseniz 30 tane hücreden aktarma yapabilirsiniz, hiç fark etmez. Şimdilik anlatacaklarım bu kadar. Takıldığınız bir yer olursa bu başlık altında sorabilirsiniz.
-
<?php
-
$dbhost = "localhost";
-
$dbuser = "veritabanıkullanıcıadı";
-
$dbpass = "veritabanışifre";
-
$dbdata = "veritabanıadı";
-
-
}
-
-
-
-
-
}
-
echo "çok şükür hallettik!";
-
?>

1 ahkâm kesilmiş, ilkin okuyayım, sonra ben de yazarım bir şeyler
24 Haziran 2009, 15:07
Teşekkürler güzel bir anlatım olmuş yani genel olarak Karakter setin ne olduğunu utf 8in ne olduğunu anlatıyor.