Siirry pääsisältöön

Ääkköset ja merkistömuunnokset sivuston siirrossa

Ääkköset rikki sivuston siirron jälkeen? Katso ohjeet tietokannan (DB_CHARSET), tiedostonimien (convmv) ja kooditiedostojen merkistömuunnoksiin Seravolla.

Jos sivustosi vanha palvelin on käyttänyt jotain vanhaa merkistökoodausta modernin UTF-8-standardin sijaan, ääkköset (ä, ö, å) tai erikoismerkit saattavat rikkoutua siirron yhteydessä. Tyypillisiä vanhoja merkistöjä ovat ISO-8859-1, ISO-8859-15 (Latin-9) sekä Windows-palvelinten Windows-1252.

Seravon ympäristössä kaikki järjestelmät, tiedostojärjestelmä ja tietokannat käyttävät aina modernia UTF-8- ja utf8mb4-merkistöä.

Merkistöongelmat ilmenevät tyypillisesti kolmessa eri paikassa:

  1. Sivuston teksteissä ja tietokannassa (tekstissä näkyy esim. ä, ö tai ``).

  2. Mediatiedostojen ja kuvien nimissä (ääkkösiä sisältävät kuvat eivät lataudu / 404).

  3. Teeman tai lisäosien kooditiedostoissa (.php-tiedostot).

1. Ääkköset rikki sivuston teksteissä (Tietokanta)

Tämä on siirroissa kaikkein yleisin merkistöongelma. Se johtuu useimmiten siitä, miten tietokanta on alun perin luotu vanhalla palvelimella tai miten WordPress tulkitsee kannan merkistöä suhteessa asetuksiin.

A. wp-config.php -asetuksen tarkistus (Helpoin korjaus)

Seravon oletusasetus tiedostossa /data/wordpress/htdocs/wp-config.php tarkistaa ensin ympäristömuuttujan ja käyttää oletuksena modernia utf8mb4-merkistöä sekä utf8mb4_swedish_ci-lajittelua:

define('DB_CHARSET', getenv('DB_CHARSET') ? getenv('DB_CHARSET') : 'utf8mb4');
define('DB_COLLATE', getenv('DB_COLLATE') ? getenv('DB_COLLATE') : 'utf8mb4_swedish_ci');

Mikäli vanha tietokanta on alun perin luotu vanhemmalla merkistöllä ja tuotu Seravolle sellaisenaan, WordPress saattaa yrittää tulkita merkkejä väärin. Voit testata korjausta muokkaamalla kyseiset rivit suoraan wp-config.php-tiedostossa:

Testi 1: Vanha UTF-8

Jos vanha tietokanta käytti vanhaa 3-tavuista UTF-8-merkistöä:

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

Testi 2: Merkistömäärityksen tyhjennys (Latin1 / ISO-8859)

Jos vanhalla palvelimella käytettiin Latin1-merkistöä, tyhjennä molemmat määritykset, jolloin WordPress antaa tietokantapalvelimen käsitellä datan sellaisenaan:

define('DB_CHARSET', '');
define('DB_COLLATE', '');

Muista välimuistin tyhjennys:

Aina kun muokkaat wp-config.php-tiedostoa, tyhjennä välimuisti komentoriviltä komennolla wp-purge-cache, jotta muutos näkyy heti selaimessa.

2. Ääkköset tiedostojen nimissä (Uploads-kansio)

Jos vanhalla palvelimella ladattujen kuvien tai liitetiedostojen nimissä on käytetty ääkkösiä vanhassa merkistössä, tiedostojärjestelmä ei välttämättä tunnista niitä oikein Seravolla, jolloin kuvat antavat selaimessa 404-virheen.

Tiedostonimet voidaan muuntaa UTF-8-muotoon palvelimella convmv-työkalulla.

Testiajo (ei tee muutoksia vielä):

Siirry uploads-hakemistoon ja testaa muunnosta:

cd /data/wordpress/htdocs/wp-content/uploads/
convmv -f ISO-8859-15 -t UTF-8 -r .

(Jos tiedostot ovat peräisin vanhalta Windows-palvelimelta, kokeile parametria -f windows-1252).

Komento tulostaa ruudulle listan tiedostoista, joiden nimet se tulisi muuttamaan.

Varsinainen muunnos:

Kun olet varmistanut testitulosteesta, että muunnos korjaa nimet oikein eikä riko niitä, lisää komennon perään --notest:

convmv -f ISO-8859-15 -t UTF-8 -r . --notest

3. Ääkköset teema- tai lisäosatiedostojen sisällä (.php, .css)

Jos itse kooditiedostoihin (kuten teeman functions.php- tai .po-käännöstiedostoihin) on tallennettu tekstiä vanhalla merkistöllä, tiedoston merkistö voidaan muuntaa iconv-komennolla.

  1. Tarkista tiedoston merkistö:

    file -i tiedosto.php
  2. Tee muunnos UTF-8-muotoon:

    iconv -f ISO-8859-15 -t UTF-8 tiedosto.php -o tiedosto_uusi.php
    mv tiedosto_uusi.php tiedosto.php

Katso myös

Merkistöongelmien selvittäminen voi joskus vaatia tarkkaa salapoliisityötä, erityisesti jos dataan on ehtinyt muodostua niin sanottua kaksinkertaista UTF-8-koodausta (mojibake). Jos et saa ääkkösiä näkymään oikein omatoimisesti, Seravon asiantuntijat auttavat mielellään osoitteessa [email protected].

Vastasiko tämä kysymykseesi?