Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🛠 Laragoni MySQL kodeeringu muutmine: latin1_swedish_ci asemel utf8mb4_unicode_ci

🛠 Laragoni MySQL kodeeringu muutmine: latin1_swedish_ci asemel utf8mb4_unicode_ci

Lõite andmebaasi phpMyAdmin kaudu, paigaldasite WordPressi ja nädal hiljem märkasite tabelites loetavate märkide asemel segapudru. Avate seaded ja näete latin1_swedish_ci. Igaüks, kes Windowsis Laragoniga töötab, puutub lõpuks selle üllatusega kokku.

Probleem on selles, et Laragoni poolt vaikimisi paigaldatav MySQL-i järk pärineb iidsest vaikesättest: märgistikuna latin1 ja võrdlusena latin1_swedish_ci. Vene keele jaoks on see katastroof: kirillitsa märgid kirjutatakse küsimärkide või mõttetu tekstina, stringide sortimine katkeb ja pluginad jooksevad vigadega kokku.

Allpool on kaks muudatust ühes failis, mis selle probleemi jäädavalt lahendavad. See võtab kolm minutit. Töötab Laragon 6, 5 ja isegi iidse versiooniga 4.

💡 Kiire ülevaade:

  • Avage my.ini Laragoni menüü kaudu ja lisage [mysqld] sektsiooni kaks rida
  • Valige WordPressi jaoks 2026. aastal optimaalne valik utf8mb4_unicode_ci (ja selgitame, miks)
  • Salvestage fail, taaskäivitage MySQL ja kontrollige tulemust phpMyAdminis
  • Boonus: kuidas muuta olemasoleva andmebaasi kodeeringut ilma andmeid kaotamata

Miks vaikimisi kodeering üldse oluline on

MySQL töötab mitmetasandilise pärimissüsteemiga: server → andmebaas → tabel → veerg. Kui serveri tasemel on määratud latin1_swedish_ci, pärivad kõik uued andmebaasid selle, kui loomisel ei määrata teisiti.

WordPressi jaoks on see kriitiline, sest:

  • Tuum, teemad ja enamik pluginaid salvestavad sisu vormingus utf8mb4
  • Andmebaasi automaatsel loomisel wp-config.php kaudu EI kirjuta WordPress serveri vaikesätet üle
  • Serveri ja tabelite kodeeringute mittevastavus tekitab „ebaselgeid" vigu: ??? halduspaneelis, katkised märgid JSON REST API-s, kokkujooksmised ekspordil

W3Techsi andmetel töötab WordPress 43,5% kõigist interneti veebisaitidest ja CMS ise on alates versioonist 4.2 nõudnud täieliku emotikonide toe jaoks utf8mb4. Laragon on üks populaarsemaid kohalikke servereid Windowsile, kuid selle MySQL-i järk tarnitakse tagasiühilduvuse huvides konservatiivse vaikesättega. Siit ka konflikt.

1. Samm: avage my.ini Laragoni menüü kaudu

Lihtsaim viis MySQL-i konfiguratsioonifailile ligi pääseda on Laragoni sisseehitatud menüü kaudu:

  • Paremklõpsake Laragoni ikoonil süsteemses salves
  • Valige Menu → MySQL → my.ini
Laragoni menüü MySQL my.ini valikuga

Notepad (või teie vaikimisi redaktor) avaneb täieliku MySQL-i konfiguratsiooniga. Fail on jagatud nurksulgudes sektsioonideks: [client], [mysqld] ja [mysqldump]. Meid huvitab [mysqld] (MySQL-i deemoni seadete sektsioon).

Kui menüü mingil põhjusel faili ei ava, leidke see käsitsi: C:\laragon\bin\mysql\<version>\my.ini. Laragon 6 järkudes võib tee olla C:\laragon\bin\mysql\mysql-8.0.30-winx64\my.ini, sõltuvalt paigaldatud versioonist.

2. Samm: lisage [mysqld] sektsiooni kaks rida

Kerige [mysqld] sektsioonini ja lisage lõppu (enne järgmist sektsiooni, kui see on olemas) järgmised kaks rida:

1character_set_server = utf8mb4
2collation_server = utf8mb4_unicode_ci

Mis siin toimub:

  • character_set_server = utf8mb4 ütleb serverile, et see kasutaks vaikimisi UTF-8 mitmekeelset versiooni 4 kodeeringut, mis toetab KÕIKI Unicode'i märke, sealhulgas emotikone, kirillitsat ja hieroglüüfe
  • collation_server = utf8mb4_unicode_ci määrab stringide võrdlusreegli: _unicode_ tähendab „vastavalt Unicode'i standardile", _ci tähendab tõstutundetut võrdlust

Peate need read lisama just [mysqld] sektsiooni, mitte [client] või [mysqldump] sektsiooni. Vale sektsiooni kasutamine on kõige levinum põhjus, miks „midagi ei muutunud".

Terve sektsioon pärast redigeerimist peaks välja nägema umbes selline:

1[mysqld]
2port=3306
3socket=/tmp/mysql.sock
4key_buffer_size=256M
5max_allowed_packet=512M
6character_set_server = utf8mb4
7collation_server = utf8mb4_unicode_ci

3. Samm: salvestage fail ja taaskäivitage MySQL

Salvestage my.ini (Ctrl+S) ja taaskäivitage MySQL. Laragonis tehakse seda sama menüü kaudu:

  • Paremklõpsake Laragoni ikoonil süsteemses salves
  • Menu → MySQL → Stop
  • Oodake 3-5 sekundit
  • Menu → MySQL → Start

Alternatiivina klõpsake Menu → Restart ja Laragon peatab ning käivitab kõik teenused korraga.

Pärast taaskäivitust luuakse uued andmebaasid vaikimisi kodeeringuga utf8mb4_unicode_ci. Olemasolevaid andmebaase EI muudeta automaatselt. Olemasoleva andmebaasi teisendamise õpetuse leiate allpool olevast jaotisest „Korduma kippuvad küsimused".

4. Samm: kontrollige tulemust phpMyAdminis

Avage phpMyAdmin Laragoni menüü kaudu (Menu → MySQL → phpMyAdmin) ja looge testandmebaas:

  • Klõpsake „Create database"
  • Sisestage suvaline nimi
  • Vaadake rippmenüüd „Collation": seal peaks nüüd vaikimisi olema utf8mb4_unicode_ci
Andmebaasi loomise aken phpMyAdminis utf8_general_ci kodeeringuga

Kui rippmenüüs on endiselt latin1_swedish_ci, kontrollige, et read character_set_server ja collation_server oleksid lisatud [mysqld] sektsiooni (mitte [client]) ja et parameetri nime ja = märgi vahel ei oleks tühikuid.

Kiire kontroll SQL-päringuga (käivitage phpMyAdminis SQL-i vahekaardil):

1SHOW VARIABLES LIKE 'character_set_server';
2SHOW VARIABLES LIKE 'collation_server';

Mõlemad muutujad peaksid tagastama vastavalt utf8mb4 ja utf8mb4_unicode_ci.

Millist kodeeringut valida: võimaluste võrdlus

MySQL-i kodeeringu kohta on kogunenud palju müüte, seega vaatleme kolme praegust ja ühte aegunud varianti:

Kodeering

MySQL-i versioon

Emotikonid

Sortimine

Ühilduvus

Otsus

utf8_general_ci

Kõik

❌ Ei

Lihtsustatud, kiire

Maksimaalne

Aegunud, ärge kasutage

utf8mb4_unicode_ci

5.5.3+

✅ Jah

Unicode'i standard (UCA 4.0)

Suurepärane

Soovitatav Laragonile

utf8mb4_0900_ai_ci

8.0+

✅ Jah

UCA 9.0, AI (aktsenditundetu)

Ainult MySQL 8+

Kaasaegne standard, kuid piiratud tugi

utf8mb4_general_ci

5.5.3+

✅ Jah

Lihtsustatud

Suurepärane

Kiiruse ja täpsuse kompromiss

Miks me soovitame utf8mb4_unicode_ci Laragonis kohalikuks arenduseks:

  • Laragon tarnitakse erinevate MySQL-i versioonidega (5.7 kuni 8.0+) ja utf8mb4_0900_ai_ci ilmus alles MySQL 8.0-s ning puudub MariaDB-s, mis on sageli alternatiivsetes järkudes
  • utf8mb4_unicode_ci töötab kõikjal alates MySQL 5.5.3 (2010)
  • Sortimise kvaliteedi erinevus unicode_ci ja 0900_ai_ci vahel on tüüpilise WordPressi saidi jaoks tühine
  • Jagatud hostingu paketid kasutavad sageli MySQL 5.7. Kui arendate kohapeal versiooniga 0900_ai_ci, kuid see puudub toodangus, saate migreerimisel veateate

Kui teate kindlalt, et teie toodanguserver kasutab MySQL 8.0+ ja teie kohalik Laragon kasutab MySQL 8.0, valige utf8mb4_0900_ai_ci. See on kaasaegne standard, mida Oracle soovitab ja millel on parem mitmekeelse sortimise tugi.

Aga utf8_general_ci? See oli asjakohane umbes kümme aastat tagasi, kui utf8mb4 ei olnud veel laialdaselt toetatud. Täna on sellel kaks saatuslikku viga: see ei suuda salvestada emotikone (WordPress kasutab neid aktiivselt halduspaneelis) ja sorteerib laiendatud märke valesti. 2026. aastal pole põhjust seda kasutada.

Video: kuidas muuta MySQL-i andmebaasi kodeeringut phpMyAdmini kaudu

Tekstijuhised on head, kuid mõnikord on lihtsam üks kord näha. See 4-minutiline video näitab täielikku protsessi olemasoleva andmebaasi kodeeringu muutmiseks phpMyAdmini liidese kaudu, alates tabelite valimisest kuni lõpliku kontrollini:

⁉️🤔 Korduma kippuvad küsimused

Mul on juba andmebaas kodeeringuga latin1_swedish_ci. Kuidas selle kodeeringut muuta?

Kõige ohutum viis on phpMyAdmini kaudu. Valige vasakult andmebaas, minge vahekaardile „Operations", valige plokis „Collation" utf8mb4_unicode_ci ja klõpsake „Go". phpMyAdmin genereerib igale tabelile ALTER-päringud. Enne seda toimingut looge kindlasti varukoopia: vahekaart „Export" → SQL-vorming → „Go."

Muutsin faili my.ini, taaskäivitasin MySQL-i, kuid phpMyAdmin näitab endiselt latin1_swedish_ci. Milles viga?

Kolm kõige levinumat põhjust: (1) read lisati [client] sektsiooni, mitte [mysqld] sektsiooni. Kontrollige, millise nurksulu sektsiooni all need on. (2) MySQL ei taaskäivitunud. Avage Windowsi tegumihaldur ja veenduge, et mysqld.exe protsess kadus ja ilmus uuesti. (3) Failis my.ini on mitu [mysqld] sektsiooni. See juhtub mõnikord pärast mitut Laragoni uuendust. Hoidke alles ainult üks.

Kumb on WordPressi jaoks parem: utf8mb4_unicode_ci või utf8mb4_general_ci?

WordPressi jaoks on erinevus minimaalne. utf8mb4_unicode_ci sorteerib mitmekeelset sisu täpsemalt (näiteks saksa „ß" = „ss"), samas kui utf8mb4_general_ci on suurte mahtude puhul veidi kiirem, kuid erinevus on millisekundites. Valige unicode_ci ja ärge muretsege.

Kas ma võin lihtsalt määrata kodeeringu failis wp-config.php?

define('DB_CHARSET', 'utf8mb4') ja define('DB_COLLATE', 'utf8mb4_unicode_ci') failis wp-config.php mõjutavad AINULT neid tabeleid, mille WordPress ise paigaldamise ajal loob. Serveri vaikesäte jääb muutumatuks ja iga käsitsi phpMyAdmini kaudu loodud andmebaas saab kodeeringu latin1_swedish_ci. Seetõttu on faili my.ini redigeerimine endiselt vajalik.

Pärast kodeeringu muutmist muutus osa saidi tekstist küsimärkideks. Kas see on pöörduv?

Jah, kuid peate toimima ettevaatlikult. Küsimärgid ilmuvad siis, kui andmed kirjutati kodeeringus latin1, kuid neid loetakse kui utf8. Lahendus: eksportige andmebaas lipuga --default-character-set=latin1, seejärel importige lipuga --default-character-set=utf8mb4. Täpne käsk sõltub teie MySQL-i versioonist, seega vaadake ametlikku dokumentatsiooni.

Kokkuvõte: mida kohe faili my.ini lisada

Kui kasutate Laragoni kohalikuks WordPressi arenduseks, lahendavad allolevad kaks rida kodeeringuprobleemi lõplikult:

1character_set_server = utf8mb4
2collation_server = utf8mb4_unicode_ci

See valik töötab kõigis MySQL-i versioonides 5.5 kuni 8.4 ja kõigis praegustes MariaDB järkudes. See salvestab korrektselt kirillitsat, emotikone ega tekita üllatusi andmebaasi migreerimisel kohalikust keskkonnast toodangusse, olenemata sellest, millisel hostingul teie toodanguserver töötab.

Küsimusi konkreetse Laragoni versiooni või mittestandardse konfiguratsiooni kohta? Vaadake teemat Laragoni foorumis, kus arendajad arutavad kodeeringu seadistamise nüansse, sealhulgas Dockeri järke ja kohandatud porte. Ja kui see artikkel säästis teile ühe õhtu, jagage seda kolleegidega, kes samuti latin1_swedish_ci-ga hädas on.