Tema: Re: DB rankinis unikodo taisymas
Autorius: cD-r0m
Data: 2013-02-24 23:57:40
"Laimis" <wiela@centras.lt> wrote in message news:kgdqt5$sh2$1@trimpas.omnitel.net...
> cD-r0m rašė:
>> Kad aš jau atstačiau visus instansus išskyrus Š didžiasias raides,
>> nieks daugiau nesusidirbo.. užtruko nepilną valandą
> 
> Tai dar patikrink ir kabutes, galbūt ir kt. simboliai (ilgasis brūkšnys, 
> daugtaškis, laipsnis...).
Pastarūjų kiekis nedidelis, dauguma pasikeitė mano minėtu būdu, ilgas brūkšnys elgiasi panašiai kaip Š raidė:
replace(data_index,'–','–')

> 
> Na, o dėl Š didžiosios, tai tas tarpas, kurio tu nematai, iš tikrųjų yra 
> simbolis. 'Š' utf-8 yra 0xC5A0. O kai nusiredukavo į latin1, tai gavosi 
> 0xC5 == 'Å', 0xA0 == NBSP (non-breaking space):
> http://en.wikipedia.org/wiki/ISO/IEC_8859-1
Šitą supratau. Yra teke rankiniu būdu DOSinių laikų lietuviškas koduotes remontuot :)

Man panašu, kad gal kai importavo tuos krengelius, tai šitoj pusėj juos užkodavo kaip unikodą. Aš iš pat pradžių neitin supratau, kodėl OSC, myadminas ir sql visi tvarkingai nustatyti į utf-8 krengeliais ėjo. Ten buvo kad utf8 DB sedėjo utf8 char'ai užkoduoti lyg db būtų latin1, o OSC juos nuskaitydavo ir pasiversdavo į ką reikia.

> 
> Tai iš tikrųjų gali bandyti taip:
> update customer_address_entity_text set value = replace(value, x'C5A0','Š');
Neima (0 rows affected. ( Query took 0.0225 sec )). 

> 
> Ar CAST funkcija, jei taip neveikia.

Kas liečia sql komandas, tai labai siauras supratimas. Apie x'kodas' irgi negirdėjau, dar google mačiau keičia juos per char(kodas) kažkaip, bet trūksta žinių čia.