Lietuviškos raidės

Iš PHP, MySQL.
Peršokti į: navigaciją, paiešką

Dažnai programuojant su PHP ir MySQL susiduriama su problema, kuri vadinasi "Lietuviškų raidžių problema". Daug forumų gijų, daug naujienų grupių žinučių, daug emailų yra parašoma, norint paklausti, ataskayti ir išsiaiškinti, kaip teisingai išgauti ir naudoti lietuviškas raides svetainėse. Daug laiko gaištama konvertuojant duomenis failuose, duomenų bazėse keičiantis serverių programiniai įrangai, keičiantis programuotojams, ar tiesiog keičiants darbo įrankiams. Straipsnelio tikslas yra tapti pirminiu (ir tikėkimės paskutiniu) šaltiniu norintiems sužinoti apie lietuviškų raidžių naudojimą programuojant su PHP ir MySQL.

Kam skirtas šis straipsnelis

Čia pabandysiu pateikti trumpą instrukciją, kaip teisingai kurti puslapius su lietuviškų (ir netik!) raidžių atvaizdavimu. Nenorėdamas plėstis į koduočių istorija, įvairumą ir kitas subtiliybes apsiribosiu tik UTF8 koduotės naudojimu. Kodėl? Ogi todėl, kad (teisingai) naudojant utf8 koduotę nebus problemų netik su lietuviškomis raidėmis, bet ir kitų kalbų specialiais simboliais.

Dažnai užduodami klausimai, susisę su šia problema

  • "Neveikia lietuviškos raidės, ką daryti?"
  • "Kodėl vietoje lietuviškų raidžių rodomi klaustukai, "kringeliai", jeroglifai?"

Sprendimas

Norint, kad dirbant kiltu kuo mažiau problemų su lietuviškų/kitų raidžių saugojimu, interpretavimu, reikia laikytis šių 4 punktų:

  • Failai (bylos), kuriuos naudojate programoje, turi būti saugomi UTF-8 koduotėje;
  • Susijungimas su MySQL duomenų baze turi būti UTF-8 koduotėje;
  • Duomenų bazės, duomenų lentelės ir duomenų stulpelio tipai turi būti UTF-8 koduotėje;
  • Failai (bylos), siunčiami klientui (pvz.: HTML, XML) turi turėti UTF-8 antraštes;

Toliau pabandysime aprašyti, kaip įgyvendinti kiekvieną iš paminėtų punktų:

Failų (bylų) saugojimas naudojant UTF-8 koduotę

Pagrine čia sunkumų kyla dirbant Ms Windows aplinkose. Pavyzdžiui Windows XP Notepad programa išsaugant bylas prideda BOM simbolius, kuriuos PHP interpretuoja kaip duomenis ir tie simboliai yra atvaizduojami PHP rezultatuose, kas sukelia papildomų problemų. Rekomenduojami teksto redaktoriai, kurie palaiko UTF-8 be BOM simbolių failų formatus:

Jų yra ir daugiau.. (galite laisvai papildyti šį sąrašą)

Susijungimas su MySQL naudojant UTF-8 koduotę

Saugant duomenis MySQL duomenų bazėje yra svarbu, kad siunčiant duomenis į ir iš DB jie būtų siunčiami UTF8 koduotėje. Šiuo metu tai pasiekiama su užklausa:

SET NAMES utf8

Ši užklausa paprastai vykdoma po susijugimo su duomenų baze, vieną kartą.

Duomenų saugojimas duomenų bazėje naudojant UTF-8 koduotę

Rezultatų (HTML, XML, ir t.t.) interpretavimas naudoajnt UTF-8 koduotę