WordPress ve veritabanı yedekleri: ş ve ğ yerine ÅŸ ve ÄŸ

Taşıma, güncelleme veya veritabanı yedeğinden sonra yazılarınız birden ş yerine ÅŸ, ı yerine ı mı gösteriyor? Veriler neredeyse her zaman yerinde durur; yalnızca yanlış kodlamayla okunur. Mojibuster yedeği onarır, nedeni ise sonra veritabanında düzeltirsiniz.

Metinle ve şu dosyalarla çalışır:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

Örneğin Excel dışa aktarımları, veritabanı yedekleri, altyazılar veya web sitesi kodu.

Düzelt

  1. Bir dosya bırakın veya metni yapıştırın
  2. Düzeltme otomatik yapılır
  3. Kopyalayın veya indirin
ya da bir dosyayı buraya sürükleyin
  • Dosya yükleme yok. Dosyalarınız doğrudan tarayıcınızda düzeltilir ve cihazınızdan asla çıkmaz.

  • AB’de sunucular. Mojibuster, Finlandiya’daki (AB) bir sunucuda çalışır; Genel Veri Koruma Tüzüğü (GDPR) geçerlidir. GDPR metni (EUR-Lex)

Sorun nasıl görünür

Sunucu taşımasından sonra bir SQL yedeği satırı

Önce

INSERT INTO wp_posts (post_title) VALUES ('Şişli kafe menüsü – çıtır börek');

Sonra

INSERT INTO wp_posts (post_title) VALUES ('Şişli kafe menüsü – çıtır börek');

Nereden kaynaklanır

WordPress metni UTF-8 olarak saklar. Birçok eski kurulum ise tablolarını latin1 olarak oluşturmuş veya latin1 ile bağlanmıştır. Yazma ve okuma aynı hatayı yaptığı sürece kimse fark etmez. Yeni bir sunucuya taşıdıktan, phpMyAdmin ile dışa aktardıktan veya bağlantı karakter kümesini değiştirdikten sonra her özel harf birden iki karaktere dönüşür.

  • wp-config.php içindeki DB_CHARSET değeri latin1 ya da tablolarla uyumsuz.
  • Yedek latin1 olarak dışa aktarılıp utf8mb4 olarak içe aktarılmış, ya da tersi.
  • Bir eklenti veya içe aktarma betiği zaten bozuk metni bir kez daha dönüştürmüş. Bu, ÅŸ gibi çift kodlanmış metin üretir.

Yedeği onarma

  1. Bir şeyi değiştirmeden önce veritabanının yedeğini alın.
  2. İlgili tabloları .sql dosyası olarak dışa aktarın, örneğin phpMyAdmin ile ya da mysqldump --default-character-set=utf8mb4 ile.
  3. Dosyayı yukarıdaki kutuya bırakın. Mojibuster yalnızca bozuk yerleri onarır ve her değişikliği gösterir.
  4. Onarılan dosyayı indirin ve utf8mb4 ile boş bir test veritabanına aktarın.
  5. Siteyi kontrol edin. Her şey doğruysa canlı veritabanına aktarın.

Yedek asla yüklenmez; bu önemlidir, çünkü içinde genellikle kullanıcı hesapları, e-posta adresleri ve yorumlar bulunur. Gizlilik ayrıntıları için gizlilik bildirimine bakın.

Serileştirilmiş verilere dikkat

WordPress bazı ayarları wp_options ve wp_postmeta içinde serileştirilmiş PHP değerleri olarak saklar, örneğin s:5:"Şule";. Sayı, bayt cinsinden uzunluktur. ÅŸ yeniden ş olunca uzunluk tutmaz ve WordPress değeri çöpe atar. Bu yüzden önce wp_posts, wp_comments ve wp_terms gibi içerik tablolarını onarın. Ayarlar için WP-CLI’nin wp search-replace komutu daha uygundur, çünkü uzunlukları günceller.

Nedeni MySQL’de düzeltme

  • Tabloları ve bağlantıyı utf8mb4’e geçirin ve wp-config.php içinde define('DB_CHARSET', 'utf8mb4'); yazın.
  • Bir latin1 sütunu aslında UTF-8 baytları içeriyorsa onu doğrudan dönüştürmeyin: bu, onu ikinci kez kodlar. Olağan yol ikili bir türden geçer: önce MODIFY … LONGBLOB, sonra MODIFY … LONGTEXT CHARACTER SET utf8mb4.
  • Her değişikliği önce veritabanının bir kopyasında deneyin.

Sık sorulan sorular

Bütün bir WordPress veritabanını tek seferde onarabilir miyim?

Evet, büyük SQL yedekleri de olur. Yine de wp_options ve wp_postmeta içindeki serileştirilmiş verilere dikkat edin; bunları WP-CLI daha iyi halleder.

Yedekteki doğru karakterler değişir mi?

Hayır. Mojibuster yalnızca açıkça bozuk dizileri onarır. Doğru metin olduğu gibi kalır.

utf8 ile utf8mb4 arasındaki fark nedir?

MySQL’de utf8 en fazla üç baytlık karakterleri saklar; emojiler kaybolur. utf8mb4 gerçek UTF-8’dir ve WordPress için doğru seçimdir.

WordPress dışındaki sistemlerde de çalışır mı?

Evet. Joomla, Drupal, Magento veya MySQL ya da MariaDB üzerindeki kendi uygulamanızda da sorun ve çözüm aynıdır.

Diğer rehberler