Neler yeni

Kullanım tekniği SMF'den XenForo Geçişinde Türkçe Karakter Hatası Çözümü 2017-12-23

indirmek için izniniz yok
SMF'den xenforo'a geçişlerde genelde bir çok sorun yaşanıyor. En çok görülen sorunların başında Türkçe karakter hatası gelmekte. Aşağıdaki anlatımda Türkçe karakter hatası almadan nasıl SMF'den XenForo'a geçiş yapılır detaylıca anlatılmıştır.

SMF'den XenForo'a geçişte Türkçe karakter hatası alıyorsanız bunun 2 nedeni vardır;
  1. Veritabanı Karakter Seti Uyumsuzluğu
  2. SMF Dil Dosyası Uyumsuzluğu
Yapılacak en doğru işlem önce SMF forum yazılımını Hem veri tabanın da hemde dil dosyasında UTF8 olarak çalıştırmaktır. Bunun için yapılması gerekenler aşağıda sıralanmıştır.

  • SMF forum yazılımınız da ne kadar eklenti varsa hepsini kaldırın.
  • SMF forum yazılımına ait Database alanına phpmyadmin panelinizden erişin.
Eğer Database karakter setiniz utf8_genaral_ci değilse ki muhtemelen latin1_swedish_ci karakter seti tanımlıdır ya da farklı bir karakter seti işte bu karakter setinden dolayı geçişlerde Türkçe karakter hatası alırsınız.

Örnek olarak yanlış tanımlanan bir karakter seti örneği;

smf-to-xenforo-1.JPG


Öncelikle Database alanındaki tüm tabloları utf8_general_ci olarak ayarlamanız gerekiyor. Peki nasıl ayarlanır?

Phpmyadmin alanından SMF forum yazılımınızın kullanmış olduğu Database alanına girin SMF'de 77 tane tablo (Bu ek yazılımlarla fazla da olabilir) sıralanır. Her tablonun karşısında Gözat alanı vardır Gözat alanına tıklıyoruz.

Örnek Resim:

smf-to-xenforo-2.JPG


Gözat dediğimizde tablonun içeriği karşımıza gelecektir. Bu alana geldikten sonra işlemler sekmesine tıklıyoruz.

Örnek Resim:

smf-to-xenforo-3.JPG


Karşınıza gelen alandan karşılaştırma alanına geliyoruz.

smf-to-xenforo-4.JPG


Yukarıdaki karışlantırma alanı latin1_swedish_ci veya sizde farklı bir karakter seti tanımlı ise bunu utf8_general_ci olarak ayarlayıp Git butonuna tıklayınız.

Örnek Resim;

smf-to-xenforo-5.JPG


Genel olarak bu yukarıdaki anlattıklarım bilinen şeyler fakat işlemler burada bitmiyor ve genel olarak hata burada yapılıyor. Tamam biz tüm tabloları utf8_general_ci yaptık ama bu tabloların sütunlarını unuttuk dolayısıyla sütunlar hala latin1_swedish_ci olarak tanımlı.

Örnek utf8_general_ci olarak karşılaştırma yaptığımız tablonun sütunlarının karşılaştırmasını görmek için utf8_general_ci olarak tanımladığımız tablonun yapı alanına tıklıyoruz.

Örnek Resim:

smf-to-xenforo-7.JPG


Karışımıza aşağıdaki gibi bir yapı alanı gelecek. Gördüğünüz gibi tablo utf8_genaral_ci olmasına rağmen sütunlar hala latin1_swedish_ci olarak karşımıza çıkıyor. (Kırmızı olarak işaretlediğim Karşılaştırma alanına bakınız.)

smf-to-xenforo-6.JPG


Dolayısıyla tüm tabloların yapı alanlarındaki sütunlarınında utf8_general_ci olarak tanımlanması gerekiyor aksi halde xenforo geçişlerinde Türkçe karakter hatası alırsınız. Peki bunu nasıl değiştiriyoruz?

Tablonun yapı alanına girdiğinizde sütunların karşısında değiştir alanı vardır buraya tıklamanız gerekiyor ve her bir sütun alanı için bunu yapmak durumundasınız. Karşılaştırma boş ise o sütuna işlem yapmayacaksınız. Sadece karakter karşılaştırması tanımlı olan sütunlara işlem yapacaksınız.(Burası önemlidir.)

Örnek Resim:

smf-to-xenforo-8.JPG


Sütunu değiştir dediğiniz de karşınıza değişiklik yapacağınız alan gelecek burada sadece karşılaştırma alanına işlem yapacaksınız yani karşılaştırma alanından utf8_general_ci seçimini yapıp kaydedeceğiniz ve bunu ne kadar karakter seti tanımlı sütun var ise hepsine aynı işlemi yapmamız gerekiyor.

Örnek Resim:

smf-to-xenforo-9.JPG


Şimdi veritabanı içerisindeki bozuk karakterleri düzeltmemiz gerekiyor. Aşağıdaki kodlar phpmyadmin SQL alanından çalıştırın. Bu işlemi yapmadan önce mutlaka yedeğinizi alın. Ayrıca aşağıdaki karakterler genelde latin1_swedish_ci karakter setinin kayıt ettiği karakterlerdir. Eğer sizde farklı karakterler var ise, aşağıdaki karakterle ile değiştirin.

Kod:
UPDATE smf_messages SET body= replace(body, 'ý', 'ı')WHERE body LIKE '%ý%';
UPDATE smf_messages SET body= replace(body, 'Ý', 'İ')WHERE body LIKE '%Ý%';
UPDATE smf_messages SET body= replace(body, 'ð', 'ğ')WHERE body LIKE '%ð%';
UPDATE smf_messages SET body= replace(body, 'Ð', 'Ğ')WHERE body LIKE '%Ð%';
UPDATE smf_messages SET body= replace(body, 'þ', 'ş')WHERE body LIKE '%þ%';
UPDATE smf_messages SET body= replace(body, 'Þ', 'Ş')WHERE body LIKE '%Þ%';

UPDATE smf_messages SET subject= replace(subject, 'ý', 'ı')WHERE subject LIKE '%ý%';
UPDATE smf_messages SET subject= replace(subject, 'Ý', 'İ')WHERE subject LIKE '%Ý%';
UPDATE smf_messages SET subject= replace(subject, 'ð', 'ğ')WHERE subject LIKE '%ð%';
UPDATE smf_messages SET subject= replace(subject, 'Ð', 'Ğ')WHERE subject LIKE '%Ð%';
UPDATE smf_messages SET subject= replace(subject, 'þ', 'ş')WHERE subject LIKE '%þ%';
UPDATE smf_messages SET subject= replace(subject, 'Þ', 'Ş')WHERE subject LIKE '%Þ%';

UPDATE smf_members SET member_name= replace(member_name, 'ý', 'ı')WHERE member_name LIKE '%ý%';
UPDATE smf_members SET member_name= replace(member_name, 'Ý', 'İ')WHERE member_name LIKE '%Ý%';
UPDATE smf_members SET member_name= replace(member_name, 'ð', 'ğ')WHERE member_name LIKE '%ð%';
UPDATE smf_members SET member_name= replace(member_name, 'Ð', 'Ğ')WHERE member_name LIKE '%Ð%';
UPDATE smf_members SET member_name= replace(member_name, 'þ', 'ş')WHERE member_name LIKE '%þ%';
UPDATE smf_members SET member_name= replace(member_name, 'Þ', 'Ş')WHERE member_name LIKE '%Þ%';



UPDATE smf_members SET real_name= replace(real_name, 'ý', 'ı')WHERE real_name LIKE '%ý%';
UPDATE smf_members SET real_name= replace(real_name, 'Ý', 'İ')WHERE real_name LIKE '%Ý%';
UPDATE smf_members SET real_name= replace(real_name, 'ð', 'ğ')WHERE real_name LIKE '%ð%';
UPDATE smf_members SET real_name= replace(real_name, 'Ð', 'Ğ')WHERE real_name LIKE '%Ð%';
UPDATE smf_members SET real_name= replace(real_name, 'þ', 'ı')WHERE real_name LIKE '%þ%';
UPDATE smf_members SET real_name= replace(real_name, 'þ', 'ş')WHERE real_name LIKE '%þ%';
UPDATE smf_members SET real_name= replace(real_name, 'Þ', 'Ş')WHERE real_name LIKE '%Þ%';


UPDATE smf_members SET personal_text= replace(personal_text, 'ý', 'ı')WHERE personal_text LIKE '%ý%';
UPDATE smf_members SET personal_text= replace(personal_text, 'Ý', 'İ')WHERE personal_text LIKE '%ý%';
UPDATE smf_members SET personal_text= replace(personal_text, 'ð', 'ğ')WHERE personal_text LIKE '%ð%';
UPDATE smf_members SET personal_text= replace(personal_text, 'Ð', 'Ğ')WHERE personal_text LIKE '%Ð%';
UPDATE smf_members SET personal_text= replace(personal_text, 'þ', 'ı')WHERE personal_text LIKE '%þ%';
UPDATE smf_members SET personal_text= replace(personal_text, 'þ', 'ş')WHERE personal_text LIKE '%þ%';
UPDATE smf_members SET personal_text= replace(personal_text, 'Þ', 'Ş')WHERE personal_text LIKE '%Þ%';
Bütün bu işlemleri yaptıktan sonra sıra geldi SMF üzerinden işlem yapmaya. Öncelikle FTP içerisinde forum adında (Herhangi bir isim olabilir) klasör oluşturuyoruz. SMF üzerinden indirdiğimiz SMF forum yazılım dosyalarını forum klasörü içerisine aktarıyoruz. Daha sonra Cpanel veya Plesk panel üzerinden yeni bir Database ve DB kullanıcısı oluşturun. Bütün bunları yaptıktan sonra artık kuruluma geçebiliriz. Tarayıcınıza siteisiminiz.com/forum/install.php yazarak enter'a tıklayın artık SMF forum yazılım kurulumunu başlatmış bulunuyoruz. .çalıştırıp kurulumu yapıyoruz gerekli Database bilgilerinizi kurulum esnasında girip devam ediyoruz fakat burada dikkat etmeniz gereken kurulum sırasında veritabanını utf8 olarak yükle seçeneğini işaretlemeyi unutmayın.

Kurulum başarıyla gerçekleşti ise, sıra geldi SMF UTF8 dil dosyasını yüklemeye SMF admin paneli alanından Dil dosyasını yükleyiniz yüklerken mutlaka utf8 olan dil dosyasını yükleyiniz. Bu da başarılı bir şekilde yapıldı ise, şimdi eski forumla yeni forumu değiş tokuş edeceğiz.

İlk SMF forumunuzun FTP dosyalarınıza ulaşın bu dosyalar arasından attachments ve avatars klasörlerini diğer forum yazılımına aktarın.

Daha sonra siteisminiz.com/forum olan SMF yazılımınızın Database bilgilerini bizim kendi smf forumumuzun Database bilgileri ile değiştiriyoruz.

Kod:
########## Database Info ##########
$db_server = 'localhost';
$db_name = 'database adı';
$db_user = 'DB kullanıcı';
$db_passwd = 'Db Şifreniz';
$db_prefix = 'smf_';
$db_persist = 0;
$db_error_send = 1;
Eğer dizin yolunuzda sorun yaşarsanız veya bilmiyorsanız ekte vermiş olduğum dizinbul.php dosyasını ana dizine atarak tarayıcıda çalıştırırsanız size dizin yolunuzu verecektir. Tekrar phpmyadmin alanına giderek smf_settings tablosuna gözat diyerek attachmentUploadDir satırını bulup içerisini mevcut dizinimiz ile değiştiriyoruz.

Bütün bu işlemlerden sonra artık xenforo geçişinizi yapabilirsiniz. XenForo geçiş sırasında dikkat edeceğiniz tek yer ise, Database Character Set ve Default Language Character Set karşılıklarının utf-8 olarak girilmesi gerekmektedir. Yani bu alana utf8_general_ci değil sadece utf-8 yazmanız yeterlidir.

Dip Not: Bu makalenin başka yerlerde izinsiz paylaşılması kesinlikle yasaktır.
Yazar
netr0n
İndirilme
2
İlk yayınlama
Son güncelleme
Değerlendirme
5.00 yıldız(lar) 3 rating

netr0n ait diğer kaynakar

Son incelemeler

O kocaman yüreğine sağlık kanka.Bunun bir örneği yok dünyada buda xenforo.gen.tr kullanıcılarının bir ayrıcalığıdır diyelim....
netr0n
netr0n
Eyvallah kanka, kullanıcılarımıza hep destek tam destek :)
Emeğiniz için canı gönülden teşekkür ederim. 9 yıllık smf kullanıcısı olarak emeğinizin bir teşekkürle ödenmeyeceğini biliyorum. Ama en azından olsun yaptığınız şeyin ne kadar doğru ve kaliteli olduğunu bildirmemiz açısından sonsuz teşekkür ederim. Emekleriniz karşılıksız kalmaz inşallah...
netr0n
netr0n
Estağfurullah yardımcı olabildiysek ne mutlu bize. Çok teşekkür ederim güzel yorumunuz için.
Harika bir konu olmuş. Ellerine sağlık
netr0n
netr0n
Teşekkür ederim replace kodlarıda eklenmiştir.