Topic: Importuojant is Mysql 5 i Mysql 5 duomenis - lietuvybė dingsta

Sveiki,
čia skaitinėjau žinutes šia tema, bet vistiek nesupratau ir parašiau klausimą :
Koduotė  1257.
Eksportavau duomenis į gzip (per phpMyadmina). Dabar netyčia ištryniau visą db (na ji ekperimentinė) ir importuoju iš gzip - lietuvybė makaronai. Nors nustatau importuojant 1257 visur kur leidžia. Programinė įranga WAMP5. Mysql 5.
Ačiū.

Re: Importuojant is Mysql 5 i Mysql 5 duomenis - lietuvybė dingsta

Na skaitant tokius klausimus tai konkrečiai pagelbėti praktiškai yra labai sunku. Todėl pabandysiu pakomentuoti situaciją ir nurodyti, ko reikia kad tokių bėdų nebūtų.

Visų pirmą, tai neaišku kokia dabartinė tavo situacija: ar duomenys yra ne norimoje koduotėje, ar jie neteisingai atvaizduojami. Tiek eksportuojant, tiek importuojant, tiek atvaizduojant duomenis reikia nepamiršti, kad egzistuoja:
a) prisijungimo prie duomenų bazės koduotė (connection encoding);
b) kokia koduote yra užkoduoti patys duomenys;
c) kokia koduote yra tie duomenys interpretuojami atvaizduojant;

Dar kartais, kai duomenys saugomi faile, svarbu, kad to failo koduotė irgi būtų nurodyta teisingai, nes atliekant operacijas galima ją prarasti.

Trumpai apie punktus:
a) prisijungimo koduotė yra nurodoma prisijungiant prie duomenų bazės naudojant "SET NAMES ... " sintaksę; programuojant savo scriptus reikia po prisijungimo vykdyti tokią užklausą; naudojant phpMyAdminą, reikia knistis jo konfigūracijoje arba labai atidžiau stebėti, kokią prisijungimo koduotę naudoja jis prisijungęs prie Jūsų duomenų bazės; reikia suprasti, kad yra milijonas phpMyAdmino versijų ir konfigūravimo variantų; Paprastai phpMyAdmin'as bando automašitkai nustatyti prisijungimo koduotę pagal tai, kokia yra duomenų bazės DEFAULT koduotė; dirbant su kitais įrankiais (tarkim komandinės eilutės mysql) irgi reikia ieškoti, kokiu būdu nustatyti koduotę; pats mysql serveris turi savo konfigūraciją, kurioje nurodoma prisijungimo koduotė pagal nutylėjimą; pamatyti kokios koduotės naudojamos: SHOW VARIABLES LIKE "character_set%"; ir tada daryti išvadas;
b) dažnai žmonės mano, kad stulpelio koduotė reiškia, kad tame stulpelyje visi duomenys yra būtent toje koduotėje; Reikia nepamišti, kad vedant duomenis į duombazę nesilaikant kitų punktų, duomenys bus išsaugoti neteisingai ir juos interpretuojant jau naudojant teisingus metodus gali nieko gero nesimatyti;
c) svarbu, per kokią programą yra stebimi duomenys; viena programa gali duomenis interpretuoti pagal stulpelio koduotę ir viską rodyti teisingai, kita programa gali imti lentelės DEFAULT koduotę ir remtis ja atvaizduojant duomenis; trečia programa gali remtis papildoma informacija (kaip tarkim HTML meta duomenys interneto naršyklių atveju) arba failo koduote (notepad'o atveju); duomenys gali būti norimoje koduotėje ir prisijungimas prie duomenų bazėje būti irgi norimoje koduotėje, bet jeigu naršyklė nežinos kokia koduote juos atvaizduoti tai matysis tik neaiškios kilmės simboliai;

Todėl pasakymas, kad "eksportavau duomenis į gzip" nežinant nieko konkrečiai apie nustatymus, kokios koduotės buvo naudojamos struktūroje, prisijungimui, eksportavimui - nieko konkrečiau padėti ir negaliu ;)