=?iso-8859-2?q?utf-8_i_problem_z_z=B3?=
maLy - 22-02-2007 00:00
=?iso-8859-2?q?utf-8_i_problem_z_z=B3?=
Mam baze mysql w utf-8 z niej wyciagam jakas wartosc np: 4800zł, nastepnie skrypt (tez w uft-8) ma wyrzucic 'zł' eregi_replace("zł","", $zmienna). No i slepy jest ereg, nie widzi 'ł'. Jesli 'ł' jest w skrypcie, w tresci to działa. Wyswietlanie '4800zł' przez skrypt jest poprawnie (jesli wyciaga to jako wartosc z mysql). Co robie zle?
Dariusz Rodziewicz - 22-02-2007 00:01
maLy wrote:
> Mam baze mysql w utf-8 z niej wyciagam jakas wartosc np: 4800zł, > nastepnie skrypt (tez w uft-8) ma wyrzucic 'zł' eregi_replace("zł","", > $zmienna). No i slepy jest ereg, nie widzi 'ł'. Jesli 'ł' jest w > skrypcie, w tresci to działa. Wyswietlanie '4800zł' przez skrypt jest > poprawnie (jesli wyciaga to jako wartosc z mysql). Co robie zle? a po co do bazy zapisujesz "zł" ??? Zapisuj samą wartość, będziesz mógł późnej robić z tym co zechcesz (dodawać mnożyć itp.) na poziomie bazy danych. Nie będziesz wtedy zapisywał do bazy danych jako string (np char) tylko jako integer. Przemyśl to.
Darek
Tomasz =?iso-8859-2?q?=A6led=BC?= - 22-02-2007 00:01
Dnia środa, 21 lutego 2007 10:24, Dariusz Rodziewicz napisał: > maLy wrote: > > Mam baze mysql w utf-8 z niej wyciagam jakas wartosc np: 4800zł, > > nastepnie skrypt (tez w uft-8) ma wyrzucic 'zł' eregi_replace("zł","", > > $zmienna). No i slepy jest ereg, nie widzi 'ł'. Jesli 'ł' jest w > > skrypcie, w tresci to działa. Wyswietlanie '4800zł' przez skrypt jest > > poprawnie (jesli wyciaga to jako wartosc z mysql). Co robie zle? > > a po co do bazy zapisujesz "zł" ??? Zapisuj samą wartość, będziesz mógł > późnej robić z tym co zechcesz (dodawać mnożyć itp.) na poziomie bazy > danych. Nie będziesz wtedy zapisywał do bazy danych jako string (np char) > tylko jako integer. Przemyśl to.
Zamiast int juz lepiejjako decimal . mozna okreslij miejsca po przecinku (grosze lub inne dla innych walut)
-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= <-=MERLIN=-> -- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.php
mark - 22-02-2007 00:01
=?iso-8859-2?Q?Re:_utf-8_i_problem_z_z=B3?=
>Jesli 'ł' jest w skrypcie, w tresci to działa.
Sprawdz wiec, czy "ł" w skrypcie i "ł" pobierane z bazy to to samo, uzywajac operatora "==". Moze tylko myslisz, ze masz wszedzie utf-8, a tak naprawde...
A przedmowca ma racje - trzymanie w bazie kwot jako stringi jest dosc zabawne.
mark
maLy - 22-02-2007 00:01
=?iso-8859-2?q?Re:_utf-8_i_problem_z_z=B3?=
On 21 Lut, 10:24, Dariusz Rodziewicz <radzi...@no-spam.wp.pl> wrote: > a po co do bazy zapisujesz "zł" ??? Zapisuj samą wartość, będziesz mógł > późnej robić z tym co zechcesz (dodawać mnożyć itp.) na poziomie bazy > danych. Nie będziesz wtedy zapisywał do bazy danych jako string (np char) > tylko jako integer. Przemyśl to.
Rozumiem o co Ci chodzi, tylko ze dane do bazy importuje z pliku, dane w bazie musza miec zachowana oryginalna forme, czasami jest 4800, czasami 4800zł.
Jak na razie poradzilem sobie wpisujac: $kwota = eregi_replace("zĹ,","",$kwota);
Dlaczego tak?
Tomasz =?iso-8859-2?q?=A6led=BC?= - 22-02-2007 00:01
Dnia środa, 21 lutego 2007 10:40, maLy napisał: > On 21 Lut, 10:24, Dariusz Rodziewicz <radzi...@no-spam.wp.pl> wrote: > > a po co do bazy zapisujesz "zł" ??? Zapisuj samą wartość, będziesz mógł > > późnej robić z tym co zechcesz (dodawać mnożyć itp.) na poziomie bazy > > danych. Nie będziesz wtedy zapisywał do bazy danych jako string (np char) > > tylko jako integer. Przemyśl to. > > Rozumiem o co Ci chodzi, tylko ze dane do bazy importuje z pliku, dane > w bazie musza miec zachowana oryginalna forme, czasami jest 4800, > czasami 4800zł. > > Jak na razie poradzilem sobie wpisujac: > $kwota = eregi_replace("zĹ,","",$kwota);
No nie masz wpisu w utf-8 .. a moze nie laczysz sie z baza przy kodowaniu utf-8 tylko latin ??? Mowisz ze importujesz dane z innego pliku, a ten inny plik jest w utf-8 ???
-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= <-=MERLIN=-> -- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.php
andreux - 22-02-2007 00:01
maLy napisał(a): > Rozumiem o co Ci chodzi, tylko ze dane do bazy importuje z pliku, dane > w bazie musza miec zachowana oryginalna forme, czasami jest 4800, > czasami 4800zł.
mozna to rozbić przy imporcie
> > Jak na razie poradzilem sobie wpisujac: > $kwota = eregi_replace("zĹ,","",$kwota);
http://groups.google.pl/group/pl.com...4dbbb1afe856c1
pozdrawiam, Andreux
Dariusz Rodziewicz - 22-02-2007 00:01
Tomasz Śledź wrote:
> Dnia środa, 21 lutego 2007 10:24, Dariusz Rodziewicz napisał: >> maLy wrote: >> > Mam baze mysql w utf-8 z niej wyciagam jakas wartosc np: 4800zł, >> > nastepnie skrypt (tez w uft-8) ma wyrzucic 'zł' eregi_replace("zł","", >> > $zmienna). No i slepy jest ereg, nie widzi 'ł'. Jesli 'ł' jest w >> > skrypcie, w tresci to działa. Wyswietlanie '4800zł' przez skrypt jest >> > poprawnie (jesli wyciaga to jako wartosc z mysql). Co robie zle? >> >> a po co do bazy zapisujesz "zł" ??? Zapisuj samą wartość, będziesz mógł >> późnej robić z tym co zechcesz (dodawać mnożyć itp.) na poziomie bazy >> danych. Nie będziesz wtedy zapisywał do bazy danych jako string (np char) >> tylko jako integer. Przemyśl to. > > Zamiast int juz lepiejjako decimal . mozna okreslij miejsca po przecinku > (grosze lub inne dla innych walut) > Masz racje - sorry za błąd
Borys =?iso-8859-2?Q?Pogore=B3o?= - 22-02-2007 00:01
Dnia 21 Feb 2007 01:05:43 -0800, maLy napisał(a):
> Mam baze mysql w utf-8 z niej wyciagam jakas wartosc np: 4800zł, > nastepnie skrypt (tez w uft-8) ma wyrzucic 'zł' eregi_replace("zł","", > $zmienna). No i slepy jest ereg, nie widzi 'ł'. Jesli 'ł' jest w > skrypcie, w tresci to działa. Wyswietlanie '4800zł' przez skrypt jest > poprawnie (jesli wyciaga to jako wartosc z mysql). Co robie zle?
ereg* nie radzi sobie z utf-8. Użyj preg_* jeśli już koniecznie musisz to mieć rozwiązane w ten sposób.
-- Borys Pogoreło borys(#)leszno,edu,pl
Tomasz =?iso-8859-2?q?=A6led=BC?= - 22-02-2007 00:01
Dnia środa, 21 lutego 2007 10:40, maLy napisał: > On 21 Lut, 10:24, Dariusz Rodziewicz <radzi...@no-spam.wp.pl> wrote: > > a po co do bazy zapisujesz "zł" ??? Zapisuj samą wartość, będziesz mógł > > późnej robić z tym co zechcesz (dodawać mnożyć itp.) na poziomie bazy > > danych. Nie będziesz wtedy zapisywał do bazy danych jako string (np char) > > tylko jako integer. Przemyśl to. > > Rozumiem o co Ci chodzi, tylko ze dane do bazy importuje z pliku, dane > w bazie musza miec zachowana oryginalna forme, czasami jest 4800, > czasami 4800zł. > > Jak na razie poradzilem sobie wpisujac: > $kwota = eregi_replace("zĹ,","",$kwota);
A nie bylo by prosciej: $kwota = $kwota * 1 ;
??? przy mnozeniu wykonuje sie niejawna konwersja do inta dzieki czemu odpadaja znaki ktore nie sa cyframi
-- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= <-=MERLIN=-> -- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.php
phpencoder.pl - 22-02-2007 00:01
Tomasz Śledź wrote:
> A nie bylo by prosciej: > $kwota = $kwota * 1 ; > ??? > przy mnozeniu wykonuje sie niejawna konwersja do inta dzieki czemu odpadaja > znaki ktore nie sa cyframi
Doprawdy "swietny pomysl". Jesli ktores kolejne PHP zrobi tu cos innego to jestes pieknie zalatwiony + zmarnujesz X czasu na znalezienie przyczyny takiego zachowania skryptu. Pol biedy jesli skrypt sie wyrznie w tym momencie. Gorzej jesli $kwota bedzie nagle inna - wtedy bedziesz mial problemy duzo powazniejsze.
Z powazaniem, -- Szyfrowanie skryptow PHP v4+v5. Blokady: czasowe, IP, MAC Loadery dla systemow: Windows, Linux, MacOS, BSD, Solaris Zabezpiecz swoje skrypty! Przetestuj http://phpencoder.pl
Tomasz =?iso-8859-2?q?=A6led=BC?= - 22-02-2007 00:01
Dnia środa, 21 lutego 2007 14:06, phpencoder.pl napisał: > Tomasz Śledź wrote: > > A nie bylo by prosciej: > > $kwota = $kwota * 1 ; > > ??? > > przy mnozeniu wykonuje sie niejawna konwersja do inta dzieki czemu > > odpadaja znaki ktore nie sa cyframi > > Doprawdy "swietny pomysl". Jesli ktores kolejne PHP zrobi tu cos innego to > jestes pieknie zalatwiony + zmarnujesz X czasu na znalezienie przyczyny > takiego zachowania skryptu. Pol biedy jesli skrypt sie wyrznie w tym > momencie. Gorzej jesli $kwota bedzie nagle inna - wtedy bedziesz mial > problemy duzo powazniejsze.
Nie powiedzialem ze to jest najlepsze rozwiazanie, ale pewnie lepsze niz ereg (i szybsze). Ereg byl by i dobry gdyby nie to ze moze zmeinic sie kodowanie pliku php (otworzony i zapisany w innym edytorze), kodowanie w bazie, kodowanie w pliku ktory przetwarza itp. Napisalem poprzednio ze juz lepiej jak by trzymal dane w formacie decimal, no ale skoro trzyma jako stringi w dodatku ze znakami w roznym kodowaniu to jest to najbardziej optymalne rozwiazanie. Co rozumiesz przez "kwota nagle inna" ?? W funtach ?? W dolarach ?? No wtedy to napewno jego ereg tego nie zalatwi. Oczywiscie moje rozwiazanie dziala tylko na kwotach calkowitych, bez "groszy", bo znak "." i "," tez bedzie obciety. Zamiast mnozenia moze uzyc jawnej konwersji: $kwota = (int)$kwota ; Czy to rozwiazanie juz cie zadowala ??
Pozdrawiam -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= <-=MERLIN=-> -- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.php
latet - 22-02-2007 00:01
=?iso-8859-2?Q?Re:_utf-8_i_problem_z_z=B3?=
> ereg* nie radzi sobie z utf-8. Użyj preg_* jeśli już koniecznie musisz to > mieć rozwiązane w ten sposób.
A moze raczej funkcje z bliblioteki mb_...() ? konkretnie: mb_ereg() Stworzone do UTF-8 i radzi sobie doskonale.
latet
Wojciech Bancer - 22-02-2007 00:01
latet napisał(a):
>> ereg* nie radzi sobie z utf-8. Użyj preg_* jeśli już koniecznie musisz to >> mieć rozwiązane w ten sposób.
> A moze raczej funkcje z bliblioteki mb_...() ? > konkretnie: mb_ereg() > Stworzone do UTF-8 i radzi sobie doskonale.
Chyba mnie pomroczność ogarnęła, albo mnie problem przerósł, ale... czy naprawdę do zamiany 'zł' na '' trzeba wytaczać armatę w postaci ereg*/preg*? Nie wystarczy str_replace?
-- Wojciech Bancer
Artur Muszynski - 22-02-2007 00:01
=?iso-8859-2?Q?Re:_utf-8_i_problem_z_z=B3?=
Tomasz "Śledź" wrote: > A nie bylo by prosciej: > $kwota = $kwota * 1 ; > przy mnozeniu wykonuje sie niejawna konwersja do inta dzieki czemu > odpadaja znaki ktore nie sa cyframi
intval(), floatval()
artur
latet - 22-02-2007 00:01
=?iso-8859-2?Q?Re:_utf-8_i_problem_z_z=B3?=
>> Mam baze mysql w utf-8 z niej wyciagam jakas wartosc np: 4800zł, >> nastepnie skrypt (tez w uft-8) ma wyrzucic 'zł' eregi_replace("zł","", >> $zmienna). No i slepy jest ereg, nie widzi 'ł'. Jesli 'ł' jest w >> skrypcie, w tresci to działa.
To moze tak:
$ZL= 'z' . "\xC5\x82"; eregi_replace($ZL,"", $zmienna)
latet
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
plik corel 11 na corel 8 = problem z otwarciem
zanotowane.pldoc.pisz.plpdf.pisz.plmarcelq.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|