WordPress és adatbázis-exportok: Ă© és Ĺ‘ az é és ő helyett

Költözés, frissítés vagy adatbázis-export után a bejegyzésekben é helyett Ă©, ő helyett Ĺ‘ áll? Az adatok szinte mindig megvannak, csak rossz kódolással olvassa őket valami. A Mojibuster megjavítja az exportot, ezután az okot is rendezheti az adatbázisban.

Szöveggel és fájlokkal is működik:

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

Például Excel-exportok, adatbázis-mentések, feliratok vagy weboldalak forráskódja.

Javítás

  1. Húzd ide a fájlt, vagy illeszd be a szöveget
  2. A javítás automatikusan megtörténik
  3. Másold ki vagy töltsd le
vagy egyszerűen húzd ide a fájlt

Hogyan néz ki a hiba?

Egy sor SQL-dumpból szerverköltözés után

Előtte

INSERT INTO wp_posts (post_title) VALUES ('Tavaszi menü – töltött káposzta');

Utána

INSERT INTO wp_posts (post_title) VALUES ('Tavaszi menü – töltött káposzta');

Honnan ered?

A WordPress a szöveget UTF-8-ban tárolja. Sok régebbi telepítésben azonban a táblák latin1 vagy latin2 kódolással jöttek létre, esetleg a kapcsolat használt ilyet. Amíg az írás és az olvasás ugyanazt a hibát követi el, senki sem veszi észre. Új szerverre költözés, phpMyAdminnal készített export vagy a kapcsolat karakterkészletének módosítása után viszont minden ékezetes betű hirtelen két karakterré esik szét.

  • A wp-config.php-ban a DB_CHARSET értéke latin1, vagy nem egyezik a táblákéval.
  • A dumpot latin1 kódolással exportálták, és utf8mb4-ként importálták – vagy fordítva.
  • Egy bővítmény vagy importszkript az már sérült szöveget még egyszer átalakította. Így jön létre a dupla kódolású szöveg, például Ă©.

Az export javítása

  1. Mielőtt bármit módosít, készítsen biztonsági mentést az adatbázisról.
  2. Exportálja az érintett táblákat .sql fájlba, például phpMyAdminnal vagy mysqldump --default-character-set=utf8mb4 paranccsal.
  3. Húzza a fájlt a fenti mezőbe. A Mojibuster csak a sérült helyeket javítja, és minden változást megmutat.
  4. Töltse le a javított fájlt, és utf8mb4 kódolással importálja egy új tesztadatbázisba.
  5. Ellenőrizze az oldalt. Ha minden rendben van, importálja az éles adatbázisba.

A dump nem kerül feltöltésre – ez azért fontos, mert általában felhasználói fiókokat, e-mail-címeket és hozzászólásokat tartalmaz. Erről bővebben a vállalkozásoknak és adatvédelmi tisztviselőknek szóló oldalon olvashat.

Vigyázat a szerializált adatokkal

A WordPress egyes beállításokat a wp_options és wp_postmeta táblákban szerializált PHP-értékként tárol, például s:6:"Kávé"; alakban. A szám a hossz bájtokban. Ha a Ă© újra é lesz, a hossz már nem egyezik, és a WordPress eldobja az értéket. Ezért először a tartalmi táblákat javítsa: wp_posts, wp_comments, wp_terms. A beállításokhoz a WP-CLI wp search-replace parancsa a jobb eszköz, mert frissíti a hosszakat is.

Az ok megszüntetése a MySQL-ben

  • Állítsa át a táblákat és a kapcsolatot utf8mb4-re, a wp-config.php-ban pedig adja meg: define('DB_CHARSET', 'utf8mb4');.
  • Ha egy latin1 oszlopban UTF-8 bájtok vannak, ne alakítsa át közvetlenül – az még egyszer kódolná. A szokásos út bináris típuson át vezet: először MODIFY … LONGBLOB, utána MODIFY … LONGTEXT CHARACTER SET utf8mb4.
  • Minden módosítást először az adatbázis egy másolatán próbáljon ki.

Gyakori kérdések

Egyszerre javítható egy egész WordPress-adatbázis?

Igen, még nagy SQL-dumpok is. A wp_options és wp_postmeta szerializált adataira azonban figyeljen – ezt a WP-CLI jobban kezeli.

Megváltoznak a dump helyes karakterei?

Nem. A Mojibuster csak az egyértelműen sérült sorozatokat javítja. A helyes szöveg változatlan marad.

Mi a különbség az utf8 és az utf8mb4 között?

A MySQL-ben az utf8 legfeljebb hárombájtos karaktereket tárol, így az emojik elvesznek. Az utf8mb4 valódi UTF-8, és a WordPresshez ez a helyes választás.

Más rendszereknél is működik, nem csak WordPressnél?

Igen. A Joomla, Drupal, Magento vagy a saját, MySQL-re vagy MariaDB-re épülő alkalmazás ugyanezzel a problémával küzd, és ugyanaz a megoldás.

További útmutatók