Lietuviškos raidės
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.
Turinys
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:
- http://www.activestate.com/komodo_edit/ - Komodo Edit
- http://www.eclipse.org/ - Eclipse IDE
- http://notepad-plus.sourceforge.net/ - Notepad++
- http://www.babelstone.co.uk/Software/BabelPad.html - BabelPad
- http://www.ultraedit.com/ - UltraEdit
- http://www.zend.com/en/products/studio/ - Zend Studio
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žklaus paprastai vykdoma po susijugimo su duomenų baze, vieną kartą.