• 22-03-2014, 19:53:52
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhabalar..

    vBulletin 3.7.4 sürümü kullanan bir forumun sunucusunu değiştirdim.

    Her şey düzgün sadece Türkçe karakter sorunu yaşıyorum.

    Veritabanı utf8_general_ci, tabloların çoğu latin1_swedish_c diğerleri latin1_bin ve config.php de latin1 değeri girilmiş durumda.

    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'þ', 'ş' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'Þ', 'Ş' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'Ç', 'Ç' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'ç', 'ç' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'Ã?', 'Ö' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'Ö', 'Ö' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'ö', 'ö' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'ü', 'ü' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'ð', 'ğ' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'ý', 'ı' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'İ', 'İ' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'Ü', 'Ü' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'Äž', 'Ğ' );
    UPDATE vb_post SET pagetext = REPLACE (pagetext, 'ı', 'ı' );
    bu kodları girdim ama "Illegal mix of collations" ile başlayan bir hata aldım.

    Bu sorunu nasıl çözebilirim.

    Teşekkür ederim.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 19:53:52 -->-> Daha önceki mesaj 19:48:50 --

    Şimdi yeni bir içerik girdim ve Türkçe karakterlerle ilgili bir sorun olmadı.

    Sanırım eski karakterlerin hepsini güncellemem gerekecek.
  • 22-03-2014, 19:54:53
    #2
    @Mf.Rub; ile görüşün halleder
  • 22-03-2014, 19:57:43
    #3
    Ben smf kullanıyorum bazen başıma gelıyor kendi sitem için değil ama farklı siteler için oluyor ben su an kullandıgınız kodları kullanıyorum ancak bu kodlar sadece o mesaj kısmı ıle ılgılı turkce karekterlerı duzeltıyor sıtede tumuyla bu sorunun yasanılmıs olabılır.

    onun ıcın eger verıtabanınız buyuk değilse not ++ ile acıp değiştirmenız ve veritabanına baştan göndermenizdir ama bunları yapmadan once yedek alın.

    yada bu sorunu cozun farklı bır db olusturun oraya yukleyın sonra kontrol ıcın ayarlardan o db secerek kontrol edebılırsınız.

    diğer çözüm ise kısa süreliğine olsa da sansurleme kısmında bu kelimeleri duzeltebilirsiniz yan ğ nin kodunu ekleyerek site karekter hatasız görünmez
  • 22-03-2014, 20:33:05
    #4
    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ı.
  • 22-03-2014, 22:42:56
    #5
    Üyeliği durduruldu
    sakarya adlı üyeden alıntı: mesajı görüntüle
    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, PHPMyAdmin’de 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.
  • 23-03-2014, 04:10:09
    #6
    Ayrıntılı cevap verdiğiniz için teşekkür ederim.

    Deneyip sonucu buraya bildiririm.

    İyi günler.
  • 23-03-2014, 10:48:20
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    sakarya adlı üyeden alıntı: mesajı görüntüle
    Ayrıntılı cevap verdiğiniz için teşekkür ederim.

    Deneyip sonucu buraya bildiririm.

    İyi günler.
    Yeni karakterlerde sorun yok ise hiç veri tabanı ile uğraşmadan şu eklenti ile çözebilrisiniz http://www.vbulletin.org/forum/showthread.php?t=239234
  • 23-03-2014, 14:02:09
    #8
    vBulletin versiyonu 3.7.x

    Eklenti sanırım 4 versiyonu için.
  • 28-04-2014, 02:17:03
    #9
    Bu sorun halen devam ediyor. Bir türlü çözemedim.

    Sürüm 3.7.x, veritabanı boyutu 2 GB'a yakın. Dosya boyutu 40 GB civarlarında.

    Yardım edebilecek kişiler iletişim bilgilerini iletirse sevinirim.