zmiana php i probelm z kodowaniem
Jacek - 15-03-2006 10:32
zmiana php i probelm z kodowaniem
mam problem z php5. zainstalowalem go dla Apacha 1.3 pod winda i baza mysql 4.1...
problem polega na tym ze jak mialem php 4, kodowanie teksty z bazy byly wyswietlane poprawnie natomiast po zmianie php na 5 zamiast polskich znaczkow mam "?"
-- pozdrawiam >> KraseK www.cell.pl www.motoswiat.pl
tmerlin - 15-03-2006 10:33
Dnia poniedziałek, 13 marca 2006 14:03, Jacek napisał: > mam problem z php5. zainstalowalem go dla Apacha 1.3 pod winda i baza > mysql 4.1... > > problem polega na tym ze jak mialem php 4, kodowanie teksty z bazy byly > wyswietlane poprawnie natomiast po zmianie php na 5 zamiast polskich > znaczkow mam "?" Czy aby to napewno wina PHP ??? Powodow moze byc kilka - APACHE - ustawione defaultowe kodowanie na iso-8859-1 - mysql - ustawione kodowanie znakow na inne niz Latin2 (badz iso-8859-2) - zla strona kodowania pliku HTML ;) -- Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.php
the_foe - 15-03-2006 10:33
Użytkownik "Jacek" <jacekNOSPAM@cell.pl> napisał w wiadomości news:dv3qjr$9u6$1@inews.gazeta.pl... > mam problem z php5. zainstalowalem go dla Apacha 1.3 pod winda i baza mysql > 4.1... > > problem polega na tym ze jak mialem php 4, kodowanie teksty z bazy byly > wyswietlane poprawnie natomiast po zmianie php na 5 zamiast polskich znaczkow > mam "?" >
Oytanie brzmi, czy uzywales jakis funkcji na stringach, typu strtolower ? Jesli nie to nie ma nic wspolnego. PHP i MySQL wypluwaja taki sami tekst jaki do niego wpisano. Chyba ze uzywales niektorych funkcji, wtedy musisz ustawic kodowanie poprawnie.
Jacek - 15-03-2006 10:33
tmerlin napisał(a):
> Czy aby to napewno wina PHP ???
tego to ja nie wiem
> Powodow moze byc kilka > - APACHE - ustawione defaultowe kodowanie na iso-8859-1
apache AddLanguage pl .po AddCharset ISO-8859-2 .iso-pl
> - mysql - ustawione kodowanie znakow na inne niz Latin2 (badz iso-8859-2)
kodowanie bazy na utf8
> - zla strona kodowania pliku HTML ;)
html ISO-8859-2
wyxchodzi ze w bazie jest inne kodowanie ale w takim ukladzie dlaczego poprzedni php pokazywal prawidlowo?
-- pozdrawiam >> KraseK www.cell.pl www.motoswiat.pl
Jacek - 15-03-2006 10:33
the_foe napisał(a):
> Oytanie brzmi, czy uzywales jakis funkcji na stringach, typu strtolower > ? Jesli nie to nie ma nic wspolnego. PHP i MySQL wypluwaja taki sami > tekst jaki do niego wpisano. Chyba ze uzywales niektorych funkcji, wtedy > musisz ustawic kodowanie poprawnie.
nie uzywalem zadnych tego typu funkcji...
-- pozdrawiam >> KraseK www.cell.pl www.motoswiat.pl
sqbie - 15-03-2006 10:33
Jacek wrote: > the_foe napisał(a): > >> Oytanie brzmi, czy uzywales jakis funkcji na stringach, typu >> strtolower ? Jesli nie to nie ma nic wspolnego. PHP i MySQL wypluwaja >> taki sami tekst jaki do niego wpisano. Chyba ze uzywales niektorych >> funkcji, wtedy musisz ustawic kodowanie poprawnie. > > > nie uzywalem zadnych tego typu funkcji... > > > Dodaj przed zapytaniem
mysql_query ("SET character_set_client=latin2;"); mysql_query ("SET character_set_results=latin2;"); mysql_query ("SET character_set_system=latin2;"); mysql_query("set names latin2");
-- Sqbie
Jacek - 15-03-2006 10:33
sqbie napisał(a):
> Dodaj przed zapytaniem > > mysql_query ("SET character_set_client=latin2;"); > mysql_query ("SET character_set_results=latin2;"); > mysql_query ("SET character_set_system=latin2;"); > mysql_query("set names latin2"); >
dodalem zadzialalo.. ale czy to nie jest sztuczne obejscie problemu?
-- pozdrawiam >> KraseK www.cell.pl www.motoswiat.pl
the_foe - 15-03-2006 10:33
Użytkownik "Jacek" <jacekNOSPAM@cell.pl> napisał w wiadomości news:dv3rsb$g7f$1@inews.gazeta.pl... > sqbie napisał(a): > >> Dodaj przed zapytaniem >> >> mysql_query ("SET character_set_client=latin2;"); >> mysql_query ("SET character_set_results=latin2;"); >> mysql_query ("SET character_set_system=latin2;"); >> mysql_query("set names latin2"); >> > > dodalem zadzialalo.. ale czy to nie jest sztuczne obejscie problemu?
przemiel wynik przez to: <?php
$znaki_win="\xA5\x8C\x8F\xB9\x9C\x9F"; $znaki_iso="\xA1\xA6\xAC\xB1\xB6\xBC"; $znaki_iso_wszystkie="\xA1 \xC6 \xCA \xA3 \xD1 \xD3 \xA6 \xAC \xAF \xB1 \xE6 \xEA \xB3 \xF1 \xF3 \xB6 \xBC \xBF"; $znaki_utf="\xC4\x84 \xC4\x86 \xC4\x98 \xC5\x81 \xC5\x83 \xC3\x93 \xC5\x9A \xC5\xB9 \xC5\xBB \xC4\x85 \xC4\x87 \xC4\x99 \xC5\x82 \xC5\x84 \xC3\xB3 \xC5\x9B \xC5\xBA \xC5\xBC"; function to_iso($txt) { //konwertuje tekst do iso global $znaki_win, $znaki_iso; return strtr($txt,$znaki_win,$znaki_iso); } function to_win($txt) { //konwertuje tekst do win global $znaki_win, $znaki_iso; return strtr($txt,$znaki_iso,$znaki_win); } function to_utf($txt) { //konwertuje tekst do utf-8 global $znaki_utf, $znaki_iso_wszystkie; $arr1=explode(" ",$znaki_iso_wszystkie); $arr2=explode(" ",$znaki_utf); for ($i=0;$i<count($arr1);$i++){ $ae[$arr1[$i]]=$arr2[$i]; } return strtr($txt,$ae); } function from_utf($txt) { //konwertuje polskie znaki w utf do iso global $znaki_utf, $znaki_iso_wszystkie; $arr1=explode(" ",$znaki_utf); $arr2=explode(" ",$znaki_iso_wszystkie); for ($i=0;$i<count($arr1);$i++){ $ae[$arr1[$i]]=$arr2[$i]; } return strtr($txt,$ae); } ?>
orcus - 15-03-2006 10:34
On Mon, 13 Mar 2006 14:15:23 +0100, Jacek wrote:
> kodowanie bazy na utf8
wiec labo bedziesz sie bawil za kazdym razem w zmiane kodowania przy wkladaniu/wyciaganiu danych albo ustawisz odpowiednie kodowanie dla calego servera.
looknij do dokumentacji.
-- Pozdrawiam orcus
..: Jest 10 rodzajow ludzi: Ci kotrzy rozumieja zapis binarny i pozostali :.
Artur Muszynski - 15-03-2006 10:35
>>> Dodaj przed zapytaniem >>> >>> mysql_query ("SET character_set_client=latin2;"); >>> mysql_query ("SET character_set_results=latin2;"); >>> mysql_query ("SET character_set_system=latin2;"); >>> mysql_query("set names latin2"); >>> >> >> dodalem zadzialalo.. ale czy to nie jest sztuczne obejscie problemu?
Nie. btw ostatnia linia powinna wystarczyć - tylko w ciapkach 'latin2'
> > przemiel wynik przez to: > <?php [ciach kod]
laboga to dopiero "sztuczne obejście problemu"!
artur
the_foe - 15-03-2006 10:35
Użytkownik "Artur Muszynski" <arturm@union.wytnijto.com.pl> napisał w wiadomości news:dv4d6s$qpk$1@213-238-68-241.adsl.inetia.pl...
> przemiel wynik przez to: > <?php [ciach kod]
laboga to dopiero "sztuczne obejście problemu"!
kazde jest sztuczne, bo wystarczy inputowac i wyswietlac w tym samym kodowaniu.
=?ISO-8859-2?Q?=A3ukasz_Dywicki?= - 15-03-2006 10:35
the_foe napisał(a): > > Użytkownik "Jacek" <jacekNOSPAM@cell.pl> napisał w wiadomości > news:dv3rsb$g7f$1@inews.gazeta.pl... >> sqbie napisał(a): >> >>> Dodaj przed zapytaniem >>> >>> mysql_query ("SET character_set_client=latin2;"); >>> mysql_query ("SET character_set_results=latin2;"); >>> mysql_query ("SET character_set_system=latin2;"); >>> mysql_query("set names latin2"); >>> >> >> dodalem zadzialalo.. ale czy to nie jest sztuczne obejscie problemu? > > przemiel wynik przez to: [ciach]
Hm.. nie widze najmniejszego sensu na tworzenie takich zawilych i brzydkich funkcji (nienajlepsze wykorzystanie explode) gdy istnieje cos, co jest lekarstwem na takie problemy - mianowicie funkcja iconv. Jest rowniez rozszezenie mb_string..
the_foe - 15-03-2006 10:35
Użytkownik "Łukasz Dywicki" <splatch@gazeta.pl> napisał w wiadomości news:dv4g9k$mfl$2@inews.gazeta.pl... > the_foe napisał(a): >> >> Użytkownik "Jacek" <jacekNOSPAM@cell.pl> napisał w wiadomości >> news:dv3rsb$g7f$1@inews.gazeta.pl... >>> sqbie napisał(a): >>> >>>> Dodaj przed zapytaniem >>>> >>>> mysql_query ("SET character_set_client=latin2;"); >>>> mysql_query ("SET character_set_results=latin2;"); >>>> mysql_query ("SET character_set_system=latin2;"); >>>> mysql_query("set names latin2"); >>>> >>> >>> dodalem zadzialalo.. ale czy to nie jest sztuczne obejscie problemu? >> >> przemiel wynik przez to: > [ciach] > > Hm.. nie widze najmniejszego sensu na tworzenie takich zawilych i brzydkich > funkcji (nienajlepsze wykorzystanie explode) gdy istnieje cos, co jest > lekarstwem na takie problemy - mianowicie funkcja iconv. Jest rowniez > rozszezenie mb_string..
funkcje te nei sa wbudowane i nie masz pewnosci czy to co piszesz bedzie Ci dzialac gdzie indziej. A eplode jest wykorzystane dobzre - p oco robic przepastnego arraya ktorego mozne sobie skonstruuowac w locie?
=?ISO-8859-2?Q?=A3ukasz_Dywicki?= - 15-03-2006 10:36
the_foe napisał(a): > > Użytkownik "Łukasz Dywicki" <splatch@gazeta.pl> napisał w wiadomości >> the_foe napisał(a): >>> >>> Użytkownik "Jacek" <jacekNOSPAM@cell.pl> napisał w wiadomości >>> news:dv3rsb$g7f$1@inews.gazeta.pl... >>>> sqbie napisał(a): >>>> >>>>> Dodaj przed zapytaniem >>>>> >>>>> mysql_query ("SET character_set_client=latin2;"); >>>>> mysql_query ("SET character_set_results=latin2;"); >>>>> mysql_query ("SET character_set_system=latin2;"); >>>>> mysql_query("set names latin2"); >>>>> >>>> >>>> dodalem zadzialalo.. ale czy to nie jest sztuczne obejscie problemu? >>> >>> przemiel wynik przez to: >> [ciach] >> >> Hm.. nie widze najmniejszego sensu na tworzenie takich zawilych i >> brzydkich funkcji (nienajlepsze wykorzystanie explode) gdy istnieje >> cos, co jest lekarstwem na takie problemy - mianowicie funkcja iconv. >> Jest rowniez rozszezenie mb_string.. > > funkcje te nei sa wbudowane i nie masz pewnosci czy to co piszesz bedzie > Ci dzialac gdzie indziej. A eplode jest wykorzystane dobzre - p oco > robic przepastnego arraya ktorego mozne sobie skonstruuowac w locie?
Funkcje iconv są bardzo przydatne i we większości przypadków są dostępne. Ja od 2 lat nie spotkałem się z sytuacją, gdzie nie ma iconv. Jest to biblioteka wkomponowana w linuksa, także nie wymaga wiele od administratora.. Nie jest to wątek do dyskusji na temat użycia explode dlatego krótko - narzut czasowy z explode jest bardzo duży (w stosunku do wykorzystania gotowej tablicy), dodatkowo wykorzystujesz globals i przy każdym wywołaniu funkcji wywołujesz explode.. gratulacje.
the_foe - 15-03-2006 10:36
Użytkownik "Łukasz Dywicki" <splatch@gazeta.pl> napisał w wiadomości news:dv5rq1$3hh$1@inews.gazeta.pl...
> Nie jest to wątek do dyskusji na temat użycia explode dlatego krótko - narzut > czasowy z explode jest bardzo duży (w stosunku do wykorzystania gotowej > tablicy), dodatkowo wykorzystujesz globals i przy każdym wywołaniu funkcji > wywołujesz explode.. gratulacje.
przy takiej ilosci tekstu nie ma znaczenie czasochlonnosc.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?=
Delphi for PHP Borlanda - co =?ISO-8859-2?Q?s=B1dzicie_o_tym?==?ISO-8859-2?Q?_pakiecie=3F?=
mysql+php - =?ISO-8859-2?Q?wydajno=B6=E6_przy_olbrzymiej_i?==?ISO-8859-2?Q?lo=B6ci_rekord=F3w?=
[MySQL] Jakie kodowanie aby =?ISO-8859-2?Q?by=B3y_i_pl_ogo?==?ISO-8859-2?Q?nki_i_o_z_dwoma_kropkami_nad_nim_=3F_=3B?==?IS O-8859-2?Q?=29?=
[MySQL] - Wstawianie aktualnej daty do bazy danych - PHP i MySQL
Jedno zapytanie różne wyniki w polu data [mysql i mysql+php]
[MySQL/PHP] Wyszukiwanie rekordu przez kolumnę wskazaną przez zmienną
Firebird - zmiana NULL na NOT NULL
Zmiana koloru tekstu i/lub =?ISO-8859-2?Q?t=B3a_w_pojedyncze?==?ISO-8859-2?Q?j_kom=F3rce_DBGrid?=
[pgsql] Zmiana schematu do =?ISO-8859-2?Q?kt=F3rego_nalezy_o?==?ISO-8859-2?Q?biekt=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.pltejsza.htw.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 |
|