Evet yukarda verilen işlemler işe yarar. Ama db.php içinde
angelside'ın dediği gibi şu değişikliği yapsak daha yakışıklı olur.
- Kod: Tümünü seç
[ AÇ ]
includes/db.php
[ BUL ]
// Make the database connection.
$db = @new sql_db($dbhost, $dbuser, $dbpasswd, $dbname, false);
[ SONRASINA EKLE ]
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
Bu konuda bir kaç önerme yapayım.
1- phpBB'nin standart kurulum sırasında latin1_swedish_ci default karakter seti olarak geliyor. Bu aslında Türkçe karakterler için bir sorun çıkartmıyor. Bu şekilde kullanılabilir. Sadece veritabanında Türkçe karakterler düzgün çıkmıyor. Misal ı -> ý oluyor. Ama sitede ekrana Türkçe karakter olarak yazılıyor.
2- Ancak bu şekilde kullanmanın iki dezavantajı var.
a -
Automatic Database Backup gibi bir MOD kullanıyorsanız ya da veritabanı yedeği almak için phpBB'nin admin panelini kullanıyorsunuz bu şekilde alınan veritabanlarını geri yüklemek sorun çıkartacktır.
Sebebi şu: Adı geçen MOD ile ya da admin panelinden alınan yedeklerde latin1_swedish_ci karakter setine rağmen Türkçe karakterler düzgün çıkıyor misal ı -> ı çıkıyor. Dolayısıyla veriyi tablolara insert (yazarken) ederken hata alacağız. Benim gördüğüm hata genelde
#1062 - Duplicate entry hatası oluyordu.
b- Benim gibi neden bu karakterler veritabanında düzgün değil diye gıcık da olabilirsiniz
Yukardaki hatadan kurtulmak için hata aldığınız tablonun karakter kümesini değiştirmeniz gerekecek. Ancak tablo dolu iken latin1_bin'den latin5_bin'e geçemeyeceksiniz hata verecektir. Tabloyu boşalt karakter setini değiştir sonra yedek veritabanını geri yükle. Oldukça zahmetli değil mi?
Bir de şu var. Çok fazla tablonuz var. Hepsinin tek tek karaktersetini değiştirmeye üşendiniz. Yedek yüklerken sadece sorun çıkartanları değiştirdiniz. Veritabanında çoğu tablo latin1_swedish_ci iken bazı tabloları latin5_bin yapmak phpBB'de sorun çıkaraktır. Özellikle mesaj gönderirken wordlist (kelime listesi) oluştururken ilgili tabloya yazı yazamayabilir. Çükü bir latin1 bir latin5 kafası karışacak. Başka sorunlar da olabilir.
En güzeli şu:
1- Baştan veritabanını tamamıyla Türkçe yapın. phpBB2.0.x dosyasını netten indirdiniz. Kurmadan önce install/schemas/mysql_schema.sql içinde düzenlemeler yapınız.
- Kod: Tümünü seç
----AÇ-----
install/schemas/mysql_schema.sql
--- BUL ----
);
-- İLE DEĞİŞTİR ---
) ENGINE=MyISAM DEFAULT CHARSET=latin5;
Standart phpBB'de yaklaşık 30 tablo var bu değişikliği 30 kez yapmanız lazım. Bir editörle kolaylıkla yapabilirsiniz.
Bundan sonra install.php çalıştırarak phpBB'yi kurabilirsiniz. Kurduktan sonra sistemin düzgün çalışması için yukarda angelside'ın dediği değişikliği yapınız. Yoksa Türkçe karakterler yerine ? işareti çıkar. phpBB'ye SQL sorgularını Türkçe karakter setine uygun şekilde yapması gerektiğini hatırlatmamız gerekiyor. Sadece veritabanının Türkçe olması yeterli değil.
2- Eğer kurulu bir siteniz varsa ne yapabilirsiniz? Veritabanınızın muhtemelen default karakter seti latin1_swedish_ci'dir. Yukardaki arkadaşın dediği gibi veritabanınızı "yapı" ve "veri" olmak üzere ayrı ayrı yedekleyiniz.
Dikkat phpMyAdmin ile yedek alırsanız yedekte Türkçe karakterler bozuk çıkacaktır. Misal ı -> ý gibi. Oysa bize artık bunların düzgün hali lazım. Eskiden sorun değildi nasılsa ekrana Türkçe yazılıyordu ama artık sorun olacak. Çünkü veritabanını latin5_bin'e çevirdikten ve db.php'de gereken değişiklikleri yaptıktan sonra bizim veritabanımızda ı -> ý yazarsa ekrana da ý şeklinde çıkar.
Elle bunlar tek tek değiştirilmez. O yüzden ya admin panelinden sadece veri yedeğini alın ya da Automatic Database Backup gibi bir MOD ile yedek alın. latin1'e rağmen bu şekilde alınan yedeklerde Türkçe karakter olması gerektiği gibi çıkıyor.
Yapıyı phpMyAdmin ile alın.
Veriyi söylediğim MOD ile ya da admin panelinden alınız.
a- Aldığınız veritabanı yedeklerinden yapı olanı not defteri ile açınız. Değiştir seçeneği ile latin1 değerlerini latin5 ile değiştiriniz.
b- Mevcut veritabanını kaldırıp aynı isimde boş bir veritabanı oluşturun. Yapıyı sql sorgusu olarak çalıştırın. Tüm tablolarınız Türkçe karakter setine uygun olacaktır.
c- Türkçe karakterlerin düzgün olarak çıktığı veri yedeğinizi de sql sorgusu olarak çalıştırın. Veritabanımızın içeriği de düzgün bir şekilde Türkçe oldu.
d- angelside'n dediği değişikliği yapın.
Hepsi bu kadar.
ButterflyT