Kas dar nesupratot, čia įrašas kolegoms programuotojams
Turėjau tokią problemą: reikėjo su JS pasiimti lietuvišką windows-1257 koduotą tekstą iš cookie. Problema tame, kad nuskaitant informaciją iš kukio su JS, vietoj lietuviškų raidžių atsiranda encodinti stringai.
Pavyzdys: PHP kode padarome:
setcookie('kukis', 'ąčęėįšųūž');
Po kukio informacijos nuskaitymo su JavaScript (kurios dėl vietos stokos neaprašinėsiu), gauname:
"%E0%E8%E6%EB%E1%F0%F8%FB%FE"
bandom:
unescape("%E0%E8%E6%EB%E1%F0%F8%FB%FE")
gaunam:
àèæëáðøûþ
blogai, nes reikia:
ąčęėįšųūž
Pasukau galvą ir išsprendžiau:
function fix_lt_chars(str)
{
var lt_from = Array('%E0', '%E8', '%E6', '%EB', '%E1', '%F0', '%F8', '%FB', '%FE', '%C0', '%C8', '%C6', '%CB', '%C1', '%D0', '%D8', '%DB', '%DE');
var lt_to = Array('%u0105', '%u010D', '%u0119', '%u0117', '%u012F', '%u0161', '%u0173', '%u016B', '%u017E', '%u0104', '%u010C', '%u0118', '%u0116', '%u012E', '%u0160', '%u0172', '%u016A', '%u017D');
l = lt_from.length;
for (i=0;i < l; i++)
{
str = str.replace(lt_from[i], lt_to[i]);
}
return str;
}
gera_reiksme = unescape(fix_lt_chars("%E0%E8%E6%EB%E1%F0%F8%FB%FE"));
gaunam:
ąčęėįšųūž
Sprendimas bjaurus, bet ką daryti, kai tas kukis viena esminių sistemos dalių, kurios neišeina pakeisti
.