Utf-8 Nedir,Utf-8 Hakkında/Özellikleri ve Utf-8 Sorun ve Çözümleri

Started by Sinan ANDIRMAN, September 26, 2008, 03:13:41 PM

Previous topic - Next topic

Sinan ANDIRMAN

Utf-8 Nedir?
UTF-8 (8-bit UCS/Unicode Transformation Format); 8 bitlik bir Unicode karakter seti formatı olup, "Unicode Transformation Format"'ın kısaltması olarak

kullanılmaktadır.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 Hakkında/Özellikleri
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.Evrensel kodlama ile aynı sayfada farklı lisanları göstermek mümkün olabilmektedir.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:

Ü <=> Ãœ
Ş <=> ÅŸ
Ğ <=> ÄŸ
Ç <=> Ç
İ  <=> Ä°
Ö <=> Ö
ü <=> ü
ş <=> ÅŸ
ğ <=> ÄŸ
ç <=> ç
ı  <=> ı
ö <=> ö

olarak sıralanabilir.
Utf-8 cahrset karakter dil setiyle,bu karşılıkları yazmaya gerek kalmadan kendi dilinizde kullanılan karakterleri bütün dil karakter setleriyle ortak hale

getirebilirsiniz.
Utf-8 Çeşitleri
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) 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.


Döküman Sahibi: Sinan ANDIRMAN

KompLo

Güzel döküman olmuş Sinan :)

Demek ki insanların bazı bilgileri edinebilmeleri için o bilgilerle alakalı problem yaşamaları gerekiyormuş.
Hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

Sinan ANDIRMAN


NoPasaran

Evet malesef şimdi latin 5 kullanıyoruz ve bu çok kötü.Yabancılar siteye üye olduklarında eğer dili ing seçerse çok kötü çıkıyor

Ancak şu anki mevcut forumlarımıza nasıl adapte edeceğiz bu durumu

Quote
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

Demişsin. Bunu nasıl tekrar yazacağız :-\
kralkartal.net SMF 2.0.8

Sinan ANDIRMAN

malesef elle yazacaksınız,başka yolu şuan da yok.
veritabanını utf8 e dönüştür seçeneğinden dönüştürüp,utf-8 dil dosyalarını yükleyeceksiniz

NoPasaran

Peki utf-8 de modifikasyondaki karakterler neden sorun çıkarıyor
kralkartal.net SMF 2.0.8

Sinan ANDIRMAN

şayet eski dil sürümümüz latin karakteri ise ve biz buna göre modifikasyonla alakalı dil dosyasını(latin karakterlere göre) kuruyorsak ş,ç,i gibi karakterler bozuk çıkıyor ;)

Gogen

Quote from: NoPasaran on October 12, 2008, 11:08:59 AM
Peki utf-8 de modifikasyondaki karakterler neden sorun çıkarıyor

çünkü modifikasyonların çoğunun dili latin. modifikasyonu kurduktan sonra veya manuel kurarken dil dosyasını notepad++ gibi bir metin editöründe açıp karakterleri utf8 e çevirdiğimiz zaman hiç bir sorun kalmaz.

NoPasaran

Ö <=> Ö

Ö yazmak için bunumu yazmak gerekiyor :)

O zaman değiştir ile bu işi halledebiliriz..

Ancak bir öz eleştiei yapmak gerekirse modifikasyon yazan arkadaşlar uluslar arası dilleride modifikasyonlarına eklemesi gerekmezmi :)
kralkartal.net SMF 2.0.8

Gogen

Benim forumum da utf-8. ilk zamanlar dediğiniz gibi elle karşılıklarını giriyordum. sonradan  notepad++ yı keşfettim. dosyayı bilgisayarıma indiriyorum ve bir tıkla utf-8 yapıp tekrar gönderiyorum.  :)

Sinan ANDIRMAN

Arkadaşlar gerekli açıklamaların hepsi dökümanda anlatılmıştır.
ayrıca mod yazarları,yaptığı modlardaki hardcoderda utf-8 dil özelliğinide ekliyor ;)

Gogen

modifikasyon kurduktan sonra oluşan utf-8 karakter hatalarıyla ilgili bir bilgi yok. o yüzden notepad++ den bahsettim. zaten utf8 kullanıcılarının bir çoğu bu şekilde yapıyor.
ayrıca modifikasyonlarda utf8 özelliği vardemişsin. dil dosyalarından bahsetmiyorum. veritabanına tablo oluşturab modlar genelde latin olarak kodlanıyor. örneğin AdManagement  reklam modu latindir. bu modu kullanarak foruma her hangi bir Türkçe karakter ı eklediğimiz zaman  bozuk çıkar. utf8 karşılığını girmemiz bile fayda etmez. çünkü latindir :)

Sinan ANDIRMAN

Quote from: Sinan ANDIRMAN on September 26, 2008, 03:13:41 PM
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


gördüğünüz gibi verilmiş ;)
Quote from: Gogen on October 12, 2008, 03:40:39 PM
modifikasyon kurduktan sonra oluşan utf-8 karakter hatalarıyla ilgili bir bilgi yok. o yüzden notepad++ den bahsettim. zaten utf8 kullanıcılarının bir çoğu bu şekilde yapıyor.
ayrıca modifikasyonlarda utf8 özelliği vardemişsin. dil dosyalarından bahsetmiyorum. veritabanına tablo oluşturab modlar genelde latin olarak kodlanıyor. örneğin AdManagement  reklam modu latindir. bu modu kullanarak foruma her hangi bir Türkçe karakter ı eklediğimiz zaman  bozuk çıkar. utf8 karşılığını girmemiz bile fayda etmez. çünkü latindir :)
veritabanından utf-8 ile karşılaştırılarak sorun çözülebilir.ayrıca modlar da harcode uygulaması vardır.yani her metin dil dosyasında gösterilmesi gerekir ;)

Gogen

malesef verilmemiş. settings.php ye eklediğin kod veritabanındaki karakter hatalarını düzeltebilir ama modikasyon kurulduktan sonta oluşan utf8 karakter hatalarını gidermez. modifikasyon kurduktan sonra Türkçe karakterler bozuk oluyor bazen ve forumdaki yazılar büyüyebiliyor. bunun için modifkasyon hangi dil dosyasına uygulanmışsa onu notepad progamında editlemek gerekli. settings.php iledeğil yani. veritabanındaki karakter hataları ile ilgili.
AdManagement ile ilgili söyledğim şeyi anlamadın sanırım. bu mod rekla modu ya. admin panelden reklam ekleyebiliyorsun foruma. reklam değilde Türkçe karakterli bir yazı eklediğimizde bu yazılar çıkmaz. çünkü modifikasyon latindir. ben bazen forumun altına yazı ekliyorum bu modla. Türk. karakterle çıkmıyor( forum utf8 ise). notepadlik bir iş değil. çünkü dediğim gibi latin.
dediğin harcode ile hiç bir ilgisi yok. tema dosyası için dil eklemekten bahsetmiyorum.

Sinan ANDIRMAN

arkadaşım yine anlaşamıyoruz galiba :)
hardcode uygulaması sadece temalarda yokki,modlarda da var.ayrıca phpmyadminden admanagement ile alakalı tabloları "İşlemler" seçeneğinden utf-8 e dönüştürebiliyorsun.ve yine ayrıca,gösterilmemiş dediğin yer DÖKÜMANIMDA DEDİĞİN İŞLEM GÖSTERİLMİŞ:
Quote from: Sinan ANDIRMAN on September 26, 2008, 03:13:41 PM
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)
bu konuda yanlışımın olabileceğini de düşünmüyorum.şayet yanlışım olsa bile buradaki üstadların yanlışımı düzelteceğine inanıyorum.

Gogen

ya sana yanlışın var diyen yok. ben başka bir şey anlatıyorum. sen başka bir şeyi savunuyorsun.
son olarak " Notepad dosyasında açılarak Farklı

Kaydet seçeneği seçilir ve kodlama Utf-8 olarak"  demişsin. tamam böyle bir yöntem var fakat bu bazen forumdaki yazıları büyütebiliyor. utf8 forumlarda modifikasyon kurduktan sonra yazı bütümesi çok oluyor.  en pratiği notepad++ da açıp dönüştürmek. bunu diyorum 2 saattir. 

Sinan ANDIRMAN

ozaman özür diiyorum senden
notepad yerine notepad ++ olacak tamam ;)

e_f_e_han

Arkadaşlar peki sadece soru işareti çıkıyorsa? nası düzenleme yapabiliriz?

Turkish-Utf8 dil . sorun şöyle:

Kategorilerde:
Ho?geldiniz
Vuslat Klan? Kurallar
Yöneticiler Odas?

MEsajlarda:
Sava?lar? 5. dünya / Vuslat klan? forumlar?na ho? geldiniz

bunu nasıl düzeltebiliriz?
fantasticodan kurdum. Türkçe dil dosyasını da üstüne yazdırdım yine değişen olmadı
_EFELERİN EFE'Sİ_
""""""""""""""""   ESKİDENDİ O   """"""""""""""""



Gogen

bunu dener misin?

settings.php de bul
?>

üstüne ekle
$db_character_set = 'utf8';

e_f_e_han

_EFELERİN EFE'Sİ_
""""""""""""""""   ESKİDENDİ O   """"""""""""""""



Advertisement: