WordPress dan ekspor database: é dan ’ pengganti é dan ’

Setelah migrasi, pembaruan, atau ekspor database, artikel Anda tiba-tiba menampilkan é alih-alih é dan ’ alih-alih ’? Datanya hampir selalu masih utuh – hanya dibaca dengan pengodean yang salah. Mojibuster memperbaiki ekspornya, lalu Anda atasi penyebabnya di database.

Bisa untuk teks dan file berikut:

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

Misalnya ekspor Excel, dump database, subtitle, atau kode situs web.

Perbaiki

  1. Letakkan file atau tempel teks
  2. Langsung diperbaiki otomatis
  3. Salin atau unduh
atau seret file ke sini
  • Tanpa upload. File Anda diperbaiki langsung di browser dan tidak pernah meninggalkan perangkat Anda.

  • Server di Uni Eropa. Mojibuster berjalan di server di Finlandia (Uni Eropa), sehingga berlaku Peraturan Perlindungan Data Umum (GDPR). Baca GDPR (EUR-Lex, dalam bahasa Inggris)

Seperti apa masalahnya

Satu baris dari dump SQL setelah pindah server

Sebelum

INSERT INTO wp_posts (post_title) VALUES ('Menu café – crème brûlée');

Sesudah

INSERT INTO wp_posts (post_title) VALUES ('Menu café – crème brûlée');

Dari mana asalnya

WordPress menyimpan teks sebagai UTF-8. Namun banyak instalasi lama membuat tabelnya sebagai latin1 atau terhubung dengan latin1. Selama penulisan dan pembacaan melakukan kesalahan yang sama, tidak ada yang sadar. Setelah pindah ke server baru, ekspor dengan phpMyAdmin, atau perubahan charset koneksi, setiap huruf beraksen mendadak menjadi dua karakter.

  • DB_CHARSET di wp-config.php bernilai latin1 atau tidak cocok dengan tabel.
  • Dump diekspor sebagai latin1 dan diimpor sebagai utf8mb4 – atau sebaliknya.
  • Plugin atau skrip impor mengonversi teks yang sudah rusak sekali lagi. Itu menghasilkan teks terkodekan ganda seperti é.

Perbaiki ekspornya

  1. Buat cadangan database sebelum mengubah apa pun.
  2. Ekspor tabel yang terdampak sebagai file .sql, misalnya dengan phpMyAdmin atau mysqldump --default-character-set=utf8mb4.
  3. Seret file ke kotak di atas. Mojibuster hanya memperbaiki bagian yang rusak dan menampilkan setiap perubahan.
  4. Unduh file hasil perbaikan dan impor dengan utf8mb4 ke database uji yang baru.
  5. Periksa situsnya. Kalau semuanya tampak benar, impor ke database produksi.

Dump tidak pernah diunggah – ini penting, karena biasanya berisi akun pengguna, alamat email, dan komentar. Detail pemrosesan ada di kebijakan privasi.

Hati-hati dengan data serial

WordPress menyimpan sebagian pengaturan di wp_options dan wp_postmeta sebagai nilai PHP yang diserialkan, seperti s:5:"Café";. Angkanya adalah panjang dalam byte. Ketika é kembali menjadi é, angka itu tidak cocok lagi dan WordPress membuang nilainya. Karena itu perbaiki dulu tabel konten seperti wp_posts, wp_comments, dan wp_terms. Untuk pengaturan, wp search-replace dari WP-CLI adalah alat yang lebih tepat karena memperbarui panjangnya.

Atasi penyebabnya di MySQL

  • Ubah tabel dan koneksi ke utf8mb4, lalu atur define('DB_CHARSET', 'utf8mb4'); di wp-config.php.
  • Jika kolom latin1 berisi byte UTF-8, jangan dikonversi langsung – itu akan mengodekannya untuk kedua kalinya. Jalur yang umum lewat tipe biner: pertama MODIFY … LONGBLOB, lalu MODIFY … LONGTEXT CHARACTER SET utf8mb4.
  • Uji setiap perubahan pada salinan database terlebih dahulu.

Pertanyaan yang sering diajukan

Bisakah saya memperbaiki seluruh database WordPress sekaligus?

Bisa, bahkan dump SQL yang besar. Perhatikan data serial di wp_options dan wp_postmeta, karena WP-CLI menanganinya lebih baik.

Apakah karakter yang sudah benar di dalam dump ikut berubah?

Tidak. Mojibuster hanya memperbaiki urutan yang jelas rusak. Teks yang benar dibiarkan apa adanya.

Apa bedanya utf8 dan utf8mb4?

Di MySQL, utf8 hanya menyimpan karakter hingga tiga byte sehingga emoji hilang. utf8mb4 adalah UTF-8 sungguhan dan pilihan yang tepat untuk WordPress.

Apakah ini berlaku untuk sistem selain WordPress?

Ya. Joomla, Drupal, Magento, atau aplikasi buatan sendiri di atas MySQL atau MariaDB punya masalah dan solusi yang sama.

Panduan lainnya