1 (edited by simas 2009-01-30 11:54:32)

Topic: Vietoj lietuviškų raidžių - š ž ir pan. simboliai

Sveiki,

patarkit kaip tvarkytis su tokia situacija: yra html forma  (koduotė windows 1257). Registruojasi klientai. Daugeliu atveju viskas vyksta gerai, bet kai kuriems klientams vietoj lietuviškų raidžių rodo &#353 &smp;#382 ir pan. simbolius. Kodėl taip atsitinka, ir kaip tvarkytis su tokiais simboliais? Nes po to duomenys iš mysql exportuojami į CSV failus ir gaunasi daugiau stulpelių ir pan., vnž susigadina visa failo struktūra

Re: Vietoj lietuviškų raidžių - š ž ir pan. simboliai

Tai dažniausiai viskas priklauso nuo:
a) kokios koduotės yra failai/scriptai;
b) kokios koduotės nurodytos html meta duomenyse;
c) kokia koduote duomenys saugomi duomenų bazėje;
d) kokie atliekami veiksmai su duomenimis programoje;
e) kaip veikia/kaip nustatytakaip duomenis interpretuoja programinė įranga pas vartotoja;

Tavo atveju tikriausiai žaidžia tas, kad scriptai konvertuoja duomenis į tokius simbolius, kurių kažkas nesupranta. Kokias funkcijas naudoji apdoroti įvedamiems duomenims?

Re: Vietoj lietuviškų raidžių - š ž ir pan. simboliai

Puslapyje nurodyta koduotė

<meta http-equiv="Content-Type" content="text/html; charset=windows-1257">

duomenų bazėje visur naudoju "cp1257_lithuanian_ci", kaip jau minėjau - daugeliu atveju (99%) viskas veikia ok. Jei būtų blogai su koduotėmis, tai visi ar dauguma db įrašų būtų blogi.

Kaip spėju,  problema atsiranda kai ateina klientas su našykle, kuri perduoda duomenis utf8 koduote ir bando juos perkoduoti ir paversti nežinia kuo.

Man šiuo atveju svarbiausias klausimas kaip su tokiais simboliais kovoti? kokias funkcijas naudoti? Kiek skaičiau php manual, tai html_decode neapdoroja tokių simbolių, ši funkcija apdoroja tik < & > ir kt. specialius simbolius....

Re: Vietoj lietuviškų raidžių - &#353; &#382; ir pan. simboliai

Jeigu problema pas klientą su specifiniu duomenų apdorojimu, tai tegul klientas ją ir sprendžiasi, nes tokių problemų bus ir tu jų visų neišpręsi. Nes bus tokie dalykai kaip labai senos naršyklės, blogai sukonfigūruotos naršyklės, egzotinės naršklės su klaidom ir/ar siauru funkcionalumu, visokie robot'ai, kurie apsimeta vartotojais, bet jų tikslai visai kiti, ir t.t.

Apie kokius simbolius tu kalbi aš dar iš tikro nežinau, nes tai ką tu parašei matosi kaip normalios lietuviškos raidės, ir kokius simbolius turėjai omenyje aš nežinau. Bendrai tai dalykas toks, kad ir kokius simbolius tau atsiunčia svarbu, kad žinotum kokioje koduotėje tie simboliai yra kad žinotum kaip juos pasikonvertuoti į savo koduotę. Gali būti, kad tu kalbi apie html_entities, kurių formatas yra toks:

&nbsp;

Tada galima juos "atsikoduoti" su html_entity_decode() funkcija.

Re: Vietoj lietuviškų raidžių - &#353; &#382; ir pan. simboliai

Taip pat verta paskaityti pavyzdžius ir tokių funkcijų, kaip get_html_translation_table dokumentacijas.