Yeni Kurulum İçin Türkçe Karakter Çözümü

Started by AODWeb, December 29, 2007, 04:17:37 PM

Previous topic - Next topic

AODWeb

Merhaba,

SMF ile sadece işim düştüğü zamanlarda uğraşan biriyim. Fakat şunu söylemeliyim, işim düştüğü zamanlardan kastım, forum kurmaya ihtiyacım olduğu zamanlar. Yani bana en beğendiğim forum yazılımını sorsalar, her zaman için ve her yönden SMF derim. Bu başarılı yazılım için bir katkım olacaksa ne mutlu bana!

Bu yazıda SMF'yi yeni kuracak olan arkadaşlara Türkçe karakter sorunları konusunda yardımcı olmaya çalışacağım.

Şu anda internette aradığımızda, herkes farklı şeyler söylüyor. Üstelik yapılan açıklamalar herhangi bir kanıta dayanmıyor ya da bir şekilde askıda kalıyor.

Ben size anlatacağım uygulamayı denedim ve herhangi bir hata ile karşılaşmadım. Bu yüzden sunuyorum, umarım benim açıklamalarım da ileride askıya düşmez. :)

Türkçe Karakter Seçimi Veritabanında Başlar

Öncelikle, SMF yazılımını kuracağımız zaman ilk olarak veritabanı oluştururuz. Hangi karakter setini kullanacağımızı veritabanına bildirmezsek, veritabanı kendi kafasına göre bir seçim yapar. (Genellikle latin1_swedish_ci olarak belirler ve bu bizim işimize yaramaz)

Fakat latin1_swedish_ci gibi Türkçe ile uzaktan yakından alakası olmayan bir  karakter setinin kullanılması elbette bizim için sorun çıkarır. Çünkü kullandığımız Türkçe dil paketinde karakter kodlaması ISO-8859-9  olarak verilmiştir.

Veritabanı karakter setlerinde bizim kullanacağımız ISO-8859-9 karakter kodlamasını destekleyen karakter seti latin5_turkish_ci karakter setidir. Dolayısıyla veritabanımızda MySQL Bağlantı Karşılaştırması ve Veritabanı Karşılaştırması ayarlarını latin5_turkish_ci olarak seçmemiz gerekiyor.

* Bu işlemleri SMF kurulumunu yapmadan yapıyoruz. Veritabanında yüklenmiş tablo ve veri olmamalı.

Şimdi işlemlere başlayalım ;

Veritabanı Türkçe Karakter Ayarlarının Yapılması

Adım 1

MySQL Bağlantı Karşılaştırması

Veritabanı yönetim aracımıza bağlandığımızda (phpMyAdmin vb.) karşımıza çıkan ekranda (phpMyAdmin Anasayfası) sunucumuzla, MySQL sürümümüzle ilgili bilgiler verilir. Bu bilgilerin arasında ;

MySQL Bağlantı Karşılaştırması seçeneğine latin5_turkish_ci değerini veriyoruz.

hxxp:img177.imageshack.us/my.php?image=phpmyadminekran1be8.jpg [nonactive]

Adım 2

Veritabanı Karşılaştırmasının Seçilmesi

phpMyAdmin ekranında (Anasayfa) sol tarafta bulunan veritabanı listesinden  daha önceden oluşturmuş olduğumuz veritabanını seçiyoruz ve veritabanı ile ilgili sayfaya geldiğimizde sağ üstte bulunan "İşlemler" sekmesine tıklıyoruz.

hxxp:img169.imageshack.us/my.php?image=phpmyadminekran2su5.jpg [nonactive]

İşlemler sayfasında en altta bulunan "Karşılaştırma" seçeneğine latin5_turkish_ci değerini veriyoruz ve "Git" butonuna basıyoruz.

hxxp:img186.imageshack.us/my.php?image=phpmyadminekran3hw7.jpg [nonactive]

Veritabanı ile ilgili yapmamız gereken işlemler bu kadar. Sırada SMF yazılımına veritabanı bağlantısını yaptıktan sonra kullanacağı karakter setini belirtmek kaldı.

Adım 3

Veritabanıyla Bağlantının Kurulmasından Sonra Kullanılacak Karakter Setinin Dosyada Belirtilmesi

Bu işlem de diğerleri kadar basit. Yönergeleri veriyorum ;

SMF yazılımının kök dizininde (settings.php, settings_bak.php dosyalarının bulunduğu yere kök (root) dizini denir) bulunan index.php dosyasını açınız.

Bu dosyada tahminen (63-67). satırlar arasında bulunan kod bloğunu bulunuz :

// Connect to the MySQL database.
if (empty($db_persist))
$db_connection = @mysql_connect($db_server, $db_user, $db_passwd);
else
$db_connection = @mysql_pconnect($db_server, $db_user, $db_passwd);


Bu kod bloğunun altına aşağıdaki karakter seti tanımlamalarını ekleyiniz.

mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");


Son görünüm şu şekilde olacak :

// Connect to the MySQL database.
if (empty($db_persist))
$db_connection = @mysql_connect($db_server, $db_user, $db_passwd);
else
$db_connection = @mysql_pconnect($db_server, $db_user, $db_passwd);

mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");


Dosyayı kaydedip kapatınız.

İşte yapmanız gereken işlemler bunlar. Artık SMF kurulumunuzu yapabilirsiniz. Eğer bunları yaptıktan sonra hala Türkçe karakterlerde sorun yaşıyorsanız sorun ya kullandığınız temada ISO-8859-9 yerine farklı bir karakter kodlaması belirtilmesi ya da sunucunuzda Türkçe karakter desteğiyle ilgili yapılandırmanın yanlış olmasıdır.

* Bu işlemleri yaptıktan sonra veritabanından "Dışarı Aktar" komutu ile tüm tabloların SQL döküm verisini yedekleyebilir, Türkçe karakter konusunda da herhangi bir sıkıntı yaşamazsınız.

Yardımcı olması dileğiyle,
Sevgi ve Saygılarımı Sunarım.

Ahmet Oğuzhan DOĞAN

*Özel hayatımdaki yoğunluktan dolayı bir süre başlığı takip edemeyeceğim. Söylediklerimi uyguladığınız halde sorun yaşıyor ve bana bildirmek istiyorsanız bu başlık altında yazabilir ve geç vereceğim cevaplardan dolayı kusuruma bakmayabilirsiniz. :)

ıstıranca_

 Çok teşekkür ederim Kendi sorunumu sayenizde çözdüm.

toriçe

linux serverdan windows servera taşıycam sitemi. server sahibi arkadaşım ve pek anlamıyo herşey bana kaldı... deneme için bi forum kurdum veri_tabani_yedekle.php ile yedek aldım veri_tabani_geriyukle.php ile yükledim kategoriler çıktı sadece içindeki konular üyeler mesajlar vs. çıkmadı... bende cpanelden aldığım yedeği yükledim. aynen çıktı herşey sorunsuz... fakat türkçe kadakterler çıkmadı. anlatılanların hepsini yaptım sorun yine aynı... belki serverdan olabilir diye düşünüyorum :( bu konuda bilgisi olan varsa yardımcı olursa çok sevinirim :(

AODWeb

Merhaba,

Kullandığınız temada karakter kodlamasının ISO-8859-9 olduğundan emin olunuz.

Ayrıca veritabanınızdan yedek alırken phpMyAdmin yöneticisinin "Dışarı Aktar" sekmesini kullanınız.

Veritabanından yüklerken de Bağlantı Karşılaştırması gibi ayarların latin5_turkish_ci olduğundan emin olunuz.

Tüm bunlar sağlandığı halde sorun yaşanıyorsa sunucu yapılandırmasında problem var demektir.

Ayrıca dikkate almayabilirsiniz ama ben Windows sunucuya taşınmanızı önermem. Özellikle de SMF için.

Kolay gelsin ;)

toriçe

windows servera yeni bi forum kurup üstüne linuxdaki yedeği yüklediğim için hata veriyo olabilir dedi servercı arkadaşım... direk forumu ve veritabanını olduğu gibi taşıyınca sorun kalkmış... şimdi de üyeler login olmuyomuş... artık kendisi halleder... yine olmazsa dediklerini yapıcam teşekkürler Ahmet :) 

moodle

Selam arkadaslar, araniza yeni katildim. Vbulletin forumumu tasimak icin smf kuruyorum. Fakat kurdugum smf forumda türkce karakterler soru isareti olarak cikiyor. Temada hic bir sorun yok, yalniz mesaj ve basliklardaki karakterlerde hata var. Hem utf8 hem de latin 5 secerek kurmayi denedim. Ikiside ise yaramadi.

Internette günlerdir cözüm bulmaya calisiyorum ama hic biri ise yaramadi. Lütfen bana yardimci olabilirmisiniz?

Simdiden tesekkürler.

tibbiye

uğraştırıcı bir sorun olduğu belli oluyor;artık türkçe karakter kullanmmayıda unutmuşssun.. :(
Bazıları sarı-yeşil-kırmızı renkleri kendilerinin zannediyorlar.
Soylarını inkar ediyorlar.
Buyrun bakın kimin renkleriymiş bunlar...

Mc_Tanju

Dediğinizi yaptım ama olmadı.Veritabanını yeniden yükleyip,yüklemeden öncede sql karşılaştırmasını binary yaparsanız sorun çözülüyor.
Saygılarımla..

kaqpa

fakat smf 2.0 da index.php dosyasında belirttiginiz kodlar bulunmuyor nasıl olacak?

TheTurk

Kolay Gelsin,
Ben önce latin5_turkish_ci seçmeyi unutmuşum peki bunu daha sonra yaptığımda da veritabında bir sorun çıkıyor diye bir uyarı veriyor.Acaba ne yapmalıyım.Sadece ı ve ş harflerinde ? işareti gözüküyor...

eftelyam

yokmu burada bir cevap yazacak arkadas yukarda arkadasın bi taneside yardım istemis verilen kod 2.0 da yok 2.0 da bunu nasıl halledecegiz...

Freefreon


Karayel64

Smf 2.0.6 Son Sürümü için
Sources > Subs-Db-mysql Bul :
if (!empty($db_options['persist']))
$connection = @mysql_pconnect($db_server, $db_user, $db_passwd);
else
$connection = @mysql_connect($db_server, $db_user, $db_passwd);


Altına Ekle :
    mysql_query("SET NAMES 'latin5'");
    mysql_query("SET CHARACTER SET latin5");
    mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");


Phpmyadmin karekter karşılamasınıda " latin5_turkish_ci " olarak ayarlayınız ve smf nizi yükleyebilirsiniz.
Kendi uygulamam olup Kesin çözümdür. Sayğılarımla

ceo06

Quote from: AODWeb on December 29, 2007, 04:17:37 PM


Adım 3

Veritabanıyla Bağlantının Kurulmasından Sonra Kullanılacak Karakter Setinin Dosyada Belirtilmesi

Bu işlem de diğerleri kadar basit. Yönergeleri veriyorum ;

SMF yazılımının kök dizininde (settings.php, settings_bak.php dosyalarının bulunduğu yere kök (root) dizini denir) bulunan index.php dosyasını açınız.

Bu dosyada tahminen (63-67). satırlar arasında bulunan kod bloğunu bulunuz :

// Connect to the MySQL database.
if (empty($db_persist))
$db_connection = @mysql_connect($db_server, $db_user, $db_passwd);
else
$db_connection = @mysql_pconnect($db_server, $db_user, $db_passwd);


Bu kod bloğunun altına aşağıdaki karakter seti tanımlamalarını ekleyiniz.

mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");


Son görünüm şu şekilde olacak :

// Connect to the MySQL database.
if (empty($db_persist))
$db_connection = @mysql_connect($db_server, $db_user, $db_passwd);
else
$db_connection = @mysql_pconnect($db_server, $db_user, $db_passwd);

mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");


Dosyayı kaydedip kapatınız.

İşte yapmanız gereken işlemler bunlar. Artık SMF kurulumunuzu yapabilirsiniz. Eğer bunları yaptıktan sonra hala Türkçe karakterlerde sorun yaşıyorsanız sorun ya kullandığınız temada ISO-8859-9 yerine farklı bir karakter kodlaması belirtilmesi ya da sunucunuzda Türkçe karakter desteğiyle ilgili yapılandırmanın yanlış olmasıdır.

* Bu işlemleri yaptıktan sonra veritabanından "Dışarı Aktar" komutu ile tüm tabloların SQL döküm verisini yedekleyebilir, Türkçe karakter konusunda da herhangi bir sıkıntı yaşamazsınız.

Yardımcı olması dileğiyle,
Sevgi ve Saygılarımı Sunarım.

Ahmet Oğuzhan DOĞAN

*Özel hayatımdaki yoğunluktan dolayı bir süre başlığı takip edemeyeceğim. Söylediklerimi uyguladığınız halde sorun yaşıyor ve bana bildirmek istiyorsanız bu başlık altında yazabilir ve geç vereceğim cevaplardan dolayı kusuruma bakmayabilirsiniz. :)

Ben dediğiniz gibi yaptım ama index.php dosyasında Adım-3'te bahsettiğiniz satırlar yok malesef. Diğer adımları uyguladım. Forumu yeni kurdum. Her yazılan mesajda Türkçe karakter problemi çıkıyor.

Advertisement: