1 (edited by Ramex 2008-09-09 14:45:04)

Topic: substring bėda

Problema tokia:
užklausoje naudoju funkciją SUBSTRING(), kuri grąžina dalį duomenų iš laukelio. ir jei paskutinis paimamas simbolis yra tarkim lietuviška raidė, tai iš jos lieka tokie "�" ir dar "gražesni" dalykai. taigi, kaip galėčiau pernelyg ne hardcod'indamas susitvarkyti, kad visos raidės būtų atvaizduojamos korektiškai. iš tikro visiškai nežinau, kuom skiriasi lotyniškų ir kitų simbolių, kuriems reikalingos kitokios koduotės, saugojimas DB.

Su sąlyga, kad šūdo nebus...

Re: substring bėda

Ramex wrote:

užklausoje naudoju funkciją SUBSTRING(), kuri grąžina dalį duomenų iš laukelio. ir jei paskutinis paimamas simbolis yra tarkim lietuviška raidė, tai iš jos lieka tokie "�" ir dar "gražesni" dalykai.

O be SUBSTRING() grąžina gerai?

Ramex wrote:

iš tikro visiškai nežinau, kuom skiriasi lotyniškų ir kitų simbolių, kuriems reikalingos kitokios koduotės, saugojimas DB.

Tai gal čia ir yra problema - nesi nieko padaręs, kad viskas veiktų gerai. MySQL'as nuo 4.1 versijos pakankamai normaliai palaiko įvairias koduotes ir reikia jas nurodyti tiek stulpeliui, tiek susijungimui. Taip pat atvaizduojant duomenis užtikrinti, kad programos, kurios atvaizduos duomenis gautų informaciją apie koduotę.

Re: substring bėda

minde wrote:

O be SUBSTRING() grąžina gerai?

Taip, be substring viską grąžina kuo puikiausiai.

minde wrote:

Tai gal čia ir yra problema - nesi nieko padaręs, kad viskas veiktų gerai. MySQL'as nuo 4.1 versijos pakankamai normaliai palaiko įvairias koduotes ir reikia jas nurodyti tiek stulpeliui, tiek susijungimui. Taip pat atvaizduojant duomenis užtikrinti, kad programos, kurios atvaizduos duomenis gautų informaciją apie koduotę.

Aš sakiau, kad nesuprantu kaip tai vyksta grynai duomenų saugojimo prasme. Ką reikia daryti, aš visada stengiuos padaryti. visada visiems duomenims nustatau utf8_bin koduotę, visada (jei palaiko mysql serveris) sesijai taip pat nustatau utf8: "SET NAMES utf8". visada duomenys ištraukiami puikiausiai, tiek tiesiogiai, tiek per ajax aplikacijas. tik ne su substring. jei paskutinis su šia funkcija ištrauktas simbolis būna lietuviškas, jis tampa neperskaitomu

Su sąlyga, kad šūdo nebus...

Re: substring bėda

Tai pradėkim nuo to: kokia mysql versija?

Re: substring bėda

4.0.27
garantuot negaliu, bet atrodo bėda išlieka ir su penktąja versija..

Su sąlyga, kad šūdo nebus...

Re: substring bėda

Tai vat, iki 4.1 (kaip ir rašiau) mysql'as normaliai koduočių nepalaiko/-ė. Esmė tame, kad virtuliai galima viską saugoti, bet realiai viskas dar neveikia taip, kaip turėtų. Tame tarpe ir funkcijos, tokios, kaip SUBSTRING(), tiesiog nėra pritaikyta multibyte duomenims apdoroti. Galima internete paieškoti kaip tai apeiti (jeigu iš vis įmanoma) arba pabandyti pasiupgreidinti. Pats bandžiau su 5.1 tai viskas puikiai veikia.

7 (edited by Ramex 2008-09-09 16:07:54)

Re: substring bėda

aišku. matai, dažniausiai naudoju serveriai.lt paslaugas, ir nei pasirinkta serverio konfigūracija, nei DB versija nuo manęs nepriklauso, tad tenka dirbt su tuom, ką duoda. ir kas liūdniausia, beveik visada MySQL <= 4.1
dabar pastebėjau, kad ir nevisada ta paskutinė raidė sudarkoma, bet labai dažnai...

Su sąlyga, kad šūdo nebus...

Re: substring bėda

Ramex wrote:

aišku. matai, dažniausiai naudoju serveriai.lt paslaugas, ir nei pasirinkta serverio konfigūracija, nei DB versija nuo manęs nepriklauso, tad tenka dirbt su tuom, ką duoda. ir kas liūdniausia, beveik visada MySQL <= 4.1
dabar pastebėjau, kad ir nevisada ta paskutinė raidė sudarkoma, bet labai dažnai...

serveriai.lt turi daug serverių ir leidžia rinktis praktiškai kokią nori konfigūraciją (tiek MySQL tiek PHP atžvilgiu). Manau gali jiems parašyti/paskambinti ir jie perkels tavo account'ą ant serverio, kuriame yra tinkamos programų versijos.

9 (edited by Ramex 2008-09-09 16:18:46)

Re: substring bėda

šitą aš žinau, jų paslaugos yra skirtos ne mano asmeniniams poreikiams. aš tiesiog tas, kuris "atlieka darbą", o serverius užsakinėja kiti žmonės viską derindami su klientais,  o ir dažniausiai klientai turi "host'ą iš seniau" ir nesileidžia į kalbas apie atnaujinimus, motyvuodami, kad anksčiau viskas puikiai veikė. vienu žodžiu, eilinį sykį teks bandyt kažkaip "išsisukt" =]
anyway, ačių už pagalbą

Su sąlyga, kad šūdo nebus...

Re: substring bėda

Ramex wrote:

eilinį sykį teks bandyt kažkaip "išsisukt" =]

Tai su PHP galima viską "sutvarkyti" (-;

Re: substring bėda

žinau, bet aš taip įsijaučiau į MySql teikiamus malonumus, kad vis mažiau man to norisi daryti su php =]

Su sąlyga, kad šūdo nebus...

Re: substring bėda

Ramex wrote:

žinau, bet aš taip įsijaučiau į MySql teikiamus malonumus, kad vis mažiau man to norisi daryti su php =]

Nelabai galiu įsivaizduoti kokie tie malonumai tame 4.0.x ten tik elementarūs dalykai, o visi "bajeriai" tik naujesnėse versijose.

13 (edited by Ramex 2008-09-09 16:37:42)

Re: substring bėda

na tie malonumai mano patirties lygmenyje. anksčiau as net nesusimąstęs būčiau visa tai atlikęs su php ir nebūtų čia buvę jokių problemų. gal tik keli mėnesiai, kaip pradėjau naudot įvairias mysql funkcijas, duomenų lentelių apjungimus ir panašiai. mysql visada man būdavo kažkas, į ką vengiau gilintis ir naudojau minimaliai. bet kai visgi pradėjau, tai visur stengiuos išnaudot mysql galimybes. taip būna, kai "vaikui duodi naują žaisliuką" =]

Su sąlyga, kad šūdo nebus...