Sitenin tüm bölümlerinde var bu durum. ve DB'nin boyutu da 2GB'a yakın. Bu yüzden açıp düzenlemem zor.
Sansürleme kısmını tam anlamadım. Karakterleri gösterme desem o zaman karakterlerin alanları boş çıkmazmı.
Türkçe karakter problemi yaşamamak için
İlk olarak tablolarınızın karakter setini değişmeniz gerekli.Bunun için size şu yöntemi tavsiye ederim.
1.)
Bu kodları db değerlerini doğru girdikten sonra abcd.php biçimnde kaydedip ftpye atıp çalıştırın.
<?php
// Database info
$dbhost = "localhost";
$dbuser = "k.adi";
$dbpass = "şifre";
$dbname = "vt_adi";
//
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, PHPMyAdminde tablolarınızı kontrol ediniz ve tabloları onarınız.
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.
Aşağıdaki SQL sorgusunu PHPMyAdmin panelinizin sorgu penceresinde çalıştırabilirsiniz.
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.
Buna örnek olarak;
vbulletinde post,forum,thread,user tablolarında karakter değişimleri yapılması gerekli.
Post tablonu için
UPDATE post SET pagetext = REPLACE (pagetext, 'þ', 'ş' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'Þ', 'Ş' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'Ã', 'Ç' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'ç', 'ç' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'Ã?', 'Ö' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'Ã', 'Ö' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'ö', 'ö' );
UPDATE post SET pagetext = REPLACE (pagetext, 'ü', 'ü' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'ð', 'ğ' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'ý', 'ı' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'İ', 'İ' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'Ã', 'Ü' );
UPDATE post SET pagetext = REPLACE (pagetext, 'Äž', 'Ğ' ) ;
UPDATE post SET pagetext = REPLACE (pagetext, 'ı', 'ı' ) ;
post yerine (tabloprefixi_post) biçiminde giriniz.
Bu verdiğim kodları tek tek çalıştırın.Aksi takdirde hafıza limiti yetmeyebilir.
Forum tablosu için
UPDATE forum SET title = REPLACE (title, 'þ', 'ş' ) ;
UPDATE forum SET title = REPLACE (title, 'Þ', 'Ş' ) ;
UPDATE forum SET title = REPLACE (title, 'Ã', 'Ç' ) ;
UPDATE forum SET title = REPLACE (title, 'ç', 'ç' ) ;
UPDATE forum SET title = REPLACE (title, 'Ã?', 'Ö' ) ;
UPDATE forum SET title = REPLACE (title, 'Ã', 'Ö' ) ;
UPDATE forum SET title = REPLACE (title, 'ö', 'ö' );
UPDATE forum SET title = REPLACE (title, 'ü', 'ü' ) ;
UPDATE forum SET title = REPLACE (title, 'ð', 'ğ' ) ;
UPDATE forum SET title = REPLACE (title, 'ý', 'ı' ) ;
UPDATE forum SET title = REPLACE (title, 'İ', 'İ' ) ;
UPDATE forum SET title = REPLACE (title, 'Ã', 'Ü' );
UPDATE forum SET title = REPLACE (title, 'Äž', 'Ğ' ) ;
UPDATE forum SET title = REPLACE (title, 'ı', 'ı' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'þ', 'ş' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'Þ', 'Ş' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'Ã', 'Ç' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'ç', 'ç' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'Ã?', 'Ö' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'Ã', 'Ö' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'ö', 'ö' );
UPDATE forum SET title_clean = REPLACE (title_clean, 'ü', 'ü' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'ð', 'ğ' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'ý', 'ı' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'İ', 'İ' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'Ã', 'Ü' );
UPDATE forum SET title_clean = REPLACE (title_clean, 'Äž', 'Ğ' ) ;
UPDATE forum SET title_clean = REPLACE (title_clean, 'ı', 'ı' ) ;
Thread ve user içinde ilgilili alanlardaki karakter değişimleri yapılacak sütunları giriniz.
İyi çalışmalar.