WordPress Veritabanında Türkçe Karakter Sorunu

Veritabanını kendi sunucuma taşırken Türkçe karakter sorunuyla karşılaştım. Sorunu çözmek için birçok yöntem denediysem de hiçbiri işe yaramadı. Daha fazla zaman harcamamak için eski usûle başvurdum. İlkel, biraz zahmetli ama garantili çözüm yöntemimi aşağıda size anlatıyorum. Belki en iyi yol olmayabilir ama benim durumumda işe yaradı:

  1. Eski veritabanınızdan dışa aktardığınız SQL veritabanı dosyasını Notepad++ ile açın.

  2. à karakterini arayın. Birçok İngilizce dışı karakter bu harfle kodlanıyor. Yanında bir tane de arkadaşı oluyor. Örneğin ö için ö bulmanız gerekiyor. Yanındaki arkadaşı ile birlikte bu tuhaf A harfini olması gereken karakterlerle CTRL+H yordamıyla değiştirin. Notepad++ size bu konuda yardımcı olacak, işinizi hızlandıracak.

Şurada bazı harflerin karşılıklarını bulabilirsiniz:

‘þ’, ‘ş’
‘Ãz’, ‘Ş’
‘Ç’, ‘Ç’
‘ç’, ‘ç’
‘Ã?’, ‘Ö’
‘Ö’, ‘Ö’
‘ö’, ‘ö’
‘ü’, ‘ü’
‘ð’, ‘ğ’
ý’, ‘ı’
Ãœ’, ‘Ü’

Uyarı: MySQL sentaksından anlamıyorsanız kesme ve tırnak karakterleri için bence hiç başınızı ağrıtmayın ve Türkçe Q klavyede ALTGR+virgül ile yazılan ` işaretini ya da ALT+0180 kullanın. Kesme için bir tane, tırnak için iki tane kullanabilirsiniz. Normal tırnak ve kesme kullanırsanız MySQL sentaksını bozabilirsiniz.

  1. Metne göz atın. Düzeltecek başka bir karakter kalmayana kadar (yani çoğu zaman siz öyle zannedene kadar) bu çalışmayı sürdürün.
  2. Yine babadan kalma bul ve değiştir yöntemiyle metindeki bütün utf8_turkish_ci ve varsa diğer kodlama ayarlarını utf8_general_ci olarak değiştirin.

  3. Veritabanı dosyasının ilk satırlarında yer alan veritabanınızın ismini de olması gerektiği gibi değiştirdikten sonra, Notepad++ menüsünde Kodlama ayarlarının UTF-8 olduğuna emin olarak dosyanızı kaydedin ve GZIP olarak sıkıştırın. 7zip programı bu sıkıştırmayı yapabilmekte.

  4. Yeni bir veritabanı oluşturun, kullanıcıya “dba” yetkisi verin ki yeni tablolar yaratabilsin. Yaratamıyorsa yetkilerinde kendisine bütün yetkileri sağlayın.

  5. Oluşturduğunuz GZIP dosyasını yeni veritabanında “içe aktarın”.

  6. WordPress blogunuzun wp_config dosyasında charset olarak utf8 belirleyin, collate’i boş bırakabilirsiniz. Bu şekilde aynı blogda birden çok dilin karakterlerini de düzgün görüntüleyeceksiniz.

  7. Her şeyi yaptığınız halde WordPress size sadece boş bir beyaz sayfa gösteriyorsa “adresiniz/wp-admin” şeklinde blogunuzun yönetim paneline giriş yaparak temanızı değiştirin. Bu beyaz sayfa sorunu büyük olasılıkla varsayılan temadan kaynaklanmaktadır. Gerekirse FTP’den yeni bir tema yükleyin ve onu kullanın. Ayrıca yüklü eklentilerinizin gerçekten yüklü ve güncel olduklarından emin olun.

Geçmiş olsun.

Şu sitelerden de yararlanılabilir:
1. MySQL Türkçe Karakter Problemi
2. Ultimate solution to weird UTF character encoding problem
3. MYSQL Türkçe Karakter Sorununa Kökten Çözüm [Karakter Değiştirme]
4. Türkçe Karakter Problemi için En Son Yapılacaklar

Çıkarılan dersler:

  1. WordPress blogu taşırken alan adlarının nameserver’ları değiştirmekte acele etmek yerine önce ftp’deki klasörlerin adam gibi yedeğini almak gerekli. Yoksa bütün yüklenen dosyalar, örneğin yazılardaki resimler yok olmakta. Nasıl format atmadan önce kırk defa neyi unutmuş olabilirim diye sağa sola bakmakta yarar olduğunu acı tecrübelerle zaman içinde öğrendiysek bunu da elbet öğreneceğiz.
  2. Nameserver’ları değiştirmeden önce WordPress blogunun da kendi içinden bir yedeğini almakta da fayda var. Bir veritabanında bir blog kayıtlıysa veritabanı ile uğraşmadan doğrudan yeni wordpress kurulumu içine bu yedek yüklenebilir ve böylece muhtemelen karakter sorunu yaşanmayabilir. Birden çok blog varsa da uygulanabilir tabi ama daha çok zaman alır. Veritabanını düzeltmekten daha çok zaman alır mı sorusu ayrı bir soru.

  3. wp_config dosyasında utf-8 dışında bir şey belirlememekte ve MySQL de yeni veritabanı oluştururken veritabanı ile tabloların kodlamasının (karşılaştırmasının) aynı olmasında ve mümkünse hepsinin utf8_general_ci olmasını sağlamakta yarar var. Sonra başınız ağrıyor gereksiz yere. Benim veritabanımdaki bütün sorunlu tablolar utf8_turkish_ci olarak ayarlıydı. utf8_general_ci olarak ayarlanmış olanlar sorun çıkarmadılar.

Zamanım olsaydı metin dosyalarındaki Türkçe karakter sorunlarını çözen bir program yazmaya çalışırdım.

3 thoughts on “WordPress Veritabanında Türkçe Karakter Sorunu

  1. Bu kadar zahmet çekmisssiniz. WordPress xml olarak içerik ve yorumları dışarıya export ediyor zaten. Araçlar -> Dışa Aktar yolunu takip etmeniz yeterli. Daha sonraYapmanız gereken WordPress i normal yollardan sunucunuza kurup almış olduğunuz xml yedeğini Araçlar -> içe aktar ile geri yüklemek. Kullanıcıları dahi kendisi oluşturuyor.
    iyi çalışmalar.

    1. Haklısınız, bahsettiğiniz yöntem daha kolay. Bazı eklentiler (plugin) blog taşımayı daha da zahmetsiz hale getirebiliyor, içe-dışa aktarma yönteminde görseller bazen aktarılamıyor (geçenlerde başıma geldi).

      Bu yazıyı yazarken neden bu metodu kullanmadığımı hatırlamıyorum. Üzerinden 5 seneye yakın zaman geçmiş.

      Yorum için teşekkür ederim.

      1. Resimler evet :)
        eklenti içeri aktarma sırasında resimleride aktarıyor ama eski siteniz aktif değilse ortada kalıyorsunuz :) Benim Yöntemim upload klasörünü ftp ile atıp yedek xml içerisinden notepad++ ile adreslerini bul değiştir yapıyorum. öyle içeriye aktarıyorum. Onlarca defa yapmışımdır :)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir