Nioka rašė: > Šį failą matau ir koreguoju su Notepad++. Jis nėra utf-8. Vienu metu jame > nematau ir lietuviškų raidžių ir kirilicos, bet matau arba vienas arba kitas > teisingai, kai pakeičiu Notepad'e Encoding. Tokio pat rezultato tikėjausi ir Tai blogai. Problema ta, kad programos interpretuoja tekstinius failus, kaip esančius kažkokios (vienos) koduotės (numatytoji OS, nustatyta programos), o jei faile esi tiesiog prirašęs baitų, kurios tik pats žinai, kaip interpretuoti (čia jie vienoje koduotėje, čia kitoje), tai programa juk to nežino. Taigi, tie skirtingi užrašai, nors esantys skirtingose koduotėse, interpretuojami esantys *vienoje* (kažkokioje, nustatytoje) koduotėje ir verčiami į vidinę koduotę (unikodą). Todėl, jei užrašai yra skirtingų koduočių, jie yra sugadinami jau šioje fazėje (skaitant asp failą). Sprendžiant iš to, kad lietuviškos raidės pavirsta kirilica, tai ta nustatytoji IIS koduotė yra rusiška. Apskritai tokiu atveju (primaišyta skirtingų koduočių užrašų) programoje reikia daryti tikslinį transkodavimą. Du momentai: - ar tau tikrai reikalingos skirtingos koduotės? Kas paskui su tais duomenimis vyksta (jie rašomi į DB?). DB matyt unikodinė, net jei tau taip neatrodo. Kaip iš DB gaunami skirtingos koduotės duomenys? Kas tai nustato? Jei nereikia skirtingų koduočių, tai pasirink utf-8 ir nebeturėsi tokių problemų: visi skirtingų kalbų užrašai gali būti vienoje koduotėje ir tada bereiks tą koduotę nurodyti ASP ir nebereikės jo kaitalioti. - išsaugok tą failą utf-8 koduotėje, nustatyk tą koduotę IIS ir paskui (žr. žemiau), priklausomai nuo kalbos, daryk transkodavimą su Response.CodePage() > funkc. ir šiame faile reikia įdėti > <%@ CodePage=65001 Language="JScript"%> > arba > Response.CodePage = 65001 > Response.CharSet = "utf-8" > Ar teisingai supratau? Taip. Bet dar reikėtų, kad ir pats failas su užrašais būtų korektiškai išsaugotas utf-8 koduotėje. > > Klausimas, ar galima įdėti ir Response.CharSet = "windows-1257", ir > Response.CharSet = "windows-1252", ir Response.CharSet = "windows-1251", > kurie būtų vykdomi pagal nurodytą kalbą [ if(lang==="Lituana"), > if(lang==="Russian") ir pan.]? Response.CodePage() nurodo į kokią koduotę (iš viduje naudojamo unikodo) perkoduoti išvedant. Response.CharSet nieko neperkoduoja, tik HTTP antraštėse nurodo koduotę, kad tokią koduotę naršyklė parinktų atvaizduodama tekstą. Analogiškai, kaip ją nurodai HTML faile: <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> Taigi, jei naudoji Response.CharSet(), tai HTML faile paprastai nebereikia meta eilutės su charset. Svarbu: koduotė, kurią nurodai naršykle (Response.CharSet() ar meta tag'u su charset) turi sutapti su tikrąja išvedimo koduote (Response.CodePage()); jei jos nesutampa, tai nematysi korektiškai.