Kayıt ol
  • Sosyal Medya Hesaplarımız:

SMF Veri Tabanını Sorunsuzca UTF-8'e Dönüştürmek

Adanalı

sɹǝʇ nq ʞǝʇ ɹıq ؛ ɐp ɐpunloʎ ʎǝsɹǝɥ ıʞuɐs
Yönetici
10
Katılım
9 Haziran 2018
Konular
1,392
Mesajlar
4,719
Çözümler
5
Reaksiyon puanı
1,283
Puanları
113
Konum
Adana
Cinsiyet
Erkek
Kesinlikle yedek almadan bu işlemi yapmayın, eğer yedek almazsanız veri tabanınızı kaybedebilirsiniz. Kesinlikle bu konu hakkında hiçbir sorumluluk kabul etmiyorum, bunun çok riskli bir işlem olduğunu bildiğiniz gibi verilerinizi kaybedeceğinizi de bildiğinizi varsayıyorum.

1) Aşağıdaki PHP kodları veri tabanınıza erişerek tabloların karakter yapılarını UTF-8′e dönüştürüyor. Bu işlemi yapmak için: $dbuser, $dbpass, $dbname alanlarını eksiksiz doldurmanız gerekiyor. Düzenlemeden sonra kodları text tabanlı bir editörüde .php uzantısı ile kaydediniz ve sunucunuzun bir dizinine atarak çalıştırınız.

PHP:
<?php
// Database info
 
$dbhost = "localhost";
$dbuser = "k.adi";
$dbpass = "şifre";
$dbname = "vt_adi";
 
//&#8212;&#8212;&#8212;&#8212;&#8212;
 
header("Content-type: text/plain");
 
$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die( mysql_error() );
$db = mysql_select_db($dbname) or die( mysql_error() );
 
$sql = "SHOW TABLES";
$result = mysql_query($sql) or die( mysql_error() );
 
while ( $row = mysql_fetch_row($result) )
{
$table = mysql_real_escape_string($row[0]);
$sql = "ALTER TABLE $table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci, CONVERT TO CHARACTER SET utf8";
mysql_query($sql) or die( mysql_error() );
print "$table changed to UTF-8.\n";
}
 
mysql_close($dbconn);
?>

Tüm veri tabanı tablolarından başarılı sonuç aldığınızı gösteren satırlar ile karşılaştıktan sonra, PHPMyAdmin’de tablolarınızı kontrol ediniz ve onarınız. Artık 2. aşamaya geçebiliriz.

2) Yukarıdaki işlem sayesinde fazla uğraşmadan veri tabanı tablo yapısını UTF-8′e dönüştürdük. Şimdi tablo içerisindeki Türkçe karakterleri UTF-8 karşılıkları ile değiştireceğiz. Bu işlem sayesinde Türkçe karakterler gidecek, yerlerine UTF-8 karşılıkları gelecek. Kullanacağımız SQL sorgusunun mantığı çok basit fakat yaptığı işlevi çok önemli. Benim kullandığım eski karakter setim: latin1_swedish_ci’ydi. Bu işlem sonrası UTF-8 olacak.

Aşağıdaki SQL sorgusunu PHPMyAdmin panelinizin sorgu penceresinde çalıştırabilirsiniz.

Kod:
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'Ä°', 'İ')WHERE ALAN_ADI LIKE '%Ä°%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'ı', 'ı')WHERE ALAN_ADI LIKE '%ı%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'Ö', 'Ö')WHERE ALAN_ADI LIKE '%Ö%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'ö', 'ö')WHERE ALAN_ADI LIKE '%ö%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'Ãœ', 'Ü')WHERE ALAN_ADI LIKE '%Ãœ%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'ü', 'ü')WHERE ALAN_ADI LIKE '%ü%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'Ç', 'Ç')WHERE ALAN_ADI LIKE '%Ç%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'ç', 'ç')WHERE ALAN_ADI LIKE '%ç%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'ÄŸ', 'ğ')WHERE ALAN_ADI LIKE '%ÄŸ%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'ÄŸ', 'Ğ')WHERE ALAN_ADI LIKE '%ÄŸ%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'ÅŸ', 'ş')WHERE ALAN_ADI LIKE '%ÅŸ%';
UPDATE TABLO_ADI SET ALAN_ADI= replace(ALAN_ADI, 'Å', 'Ş')WHERE ALAN_ADI LIKE '%Å%

Şu konuda sizi bilgilendirmek istiyorum, yukarıdaki kodların yerleşimi kullandığınız karakter setine göre değişiyor. Hangi karakterleriniz hatalı olarka gözüküyorsa onların yerine UTF-8 karşılıklarını koyuyorsunuz.Ben yukarıdaki sorgularda “Ä°” gördüğün yere “İ” koy dedim. Sizde yerleştirmeleri ona göre yapınız.

NOT: Bu işlemi localhost phpmyadmin'de uygulamanızı öneriyorum, yukarıdaki işlemleri yaptıktan sonra veri tabanı yedeğini export yapın. Daha sonra UTF-8 Dil dosyalarını forumunuzun languages klasörüne atın. Daha sonra BAKIM>>VERİ TABANI>>FORUM DİLİNİ UTF-8' e DÖNÜŞTÜR seçeneğini kullanın. En son olarak veri tabanının tüm bakımlarını yapın. Eğer UTF-8'e dönüştür seçeneğinde sorun çıkarsa yukarıda export etmiş olduğunuz yedeği import yaparakta kullanabilirsiniz. Ayrıca forumun dil seçeneklerini UTF-8 Turkish yapmayı unutmayın.
 

Yorum yapmak için bir hesap oluşturun veya giriş yapın

Yeni bir konu oluşturabilmek veya konulara cevap verebilmek için sitemize üye olmanız gerekmektedir

Hesap oluştur

Forum sitemizde bir hesap oluşturun. Bu işlem çok kolay!

Giriş yap

Zaten bir hesabınız var mı? Giriş yapın.

DMCA.com Protection Status
Üst