![]() ![]() |
śro, 01 mar 2006 - 21:54
Post
#1
|
|
|
Znawca ![]() ![]() ![]() Grupa: Użytkownicy Postów: 319 Dołączył: wto, 20 gru 05 Skąd: Belgia Korzystam z IPB 2.3 |
Witam, w general config mam iso-8859-2 a w mysql nie ma takiego czegos i ciagle mam krzaki, nawet w nowych postach sa :/ co jest zle ? jakie ustawic zeby zniklo ? ta opcja porownan jest w phpmyadmin.
-------------------- ![]() ha :P kupilem sobie licencje :D |
|
|
|
pią, 03 mar 2006 - 14:45
Post
#2
|
|
|
IBPlanet Grupa: Moderatorzy Postów: 1,049 Dołączył: pon, 05 gru 05 Skąd: IBPlanet.pl Korzystam z IPB 3.0 |
Próbowałeś UTF-8, Latin2 ?
-------------------- |
|
|
|
pią, 03 mar 2006 - 15:58
Post
#3
|
|
|
Znawca ![]() ![]() ![]() Grupa: Użytkownicy Postów: 319 Dołączył: wto, 20 gru 05 Skąd: Belgia Korzystam z IPB 2.3 |
UTF8 w ipb a latin 2 w mysql ? podaj wiecej informacji
-------------------- ![]() ha :P kupilem sobie licencje :D |
|
|
|
wto, 14 mar 2006 - 22:45
Post
#4
|
|
|
Stara się ![]() Grupa: Użytkownicy Postów: 16 Dołączył: czw, 23 lut 06 |
ja mam w Panelu ustawione kodowanie dla forum iso-8859-2 - i fakt zawsze - nie ma krzaczków w polskich znakach pobieranych z plików z polskim językiem, ale zawsze pojawiają się w postach - cóż wina porównać w MySQL-u u mnie od wieków we wszystkich skryptach (mambo, joompla, phpbb, IPB) działa jedno rozwiązanie - jeszcze nigdy mnie nie zawiodło. Jeśli chodzi o IPB 2.1.x to edytujesz plik class_db_mysql.php (ips_kernel->class_db_mysql.php) szukasz w nik czegoś takiego:
KOD if ( $this->obj['persistent'] AND ! IPS_MAIN_DB_CLASS_LEGACY ) { $this->connection_id = mysql_pconnect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] , $this->obj['force_new_connection'] ); i zaraz pod tym wstawiasz: KOD mysql_query('SET character_set_connection=latin2', $this->connection_id); mysql_query('SET character_set_client=latin2', $this->connection_id); mysql_query('SET character_set_results=latin2', $this->connection_id); mysql_query("set names latin2;"); później szukasz: KOD else { if ( IPS_MAIN_DB_CLASS_LEGACY ) { $this->connection_id = mysql_connect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] ); i zaraz pod tym wstawiasz: KOD mysql_query('SET character_set_connection=latin2', $this->connection_id); mysql_query('SET character_set_client=latin2', $this->connection_id); mysql_query('SET character_set_results=latin2', $this->connection_id); mysql_query("set names latin2;"); i w końcu: KOD else { $this->connection_id = mysql_connect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] , $this->obj['force_new_connection'] ); i pod tym: KOD mysql_query('SET character_set_connection=latin2', $this->connection_id); mysql_query('SET character_set_client=latin2', $this->connection_id); mysql_query('SET character_set_results=latin2', $this->connection_id); mysql_query("set names latin2;"); nie ma bata przy ISO na stronie i standardowo zainstalowanym MySQL'u (tak jak ma prawie 100%) serwerów musi wszystko działać poprawnie!! Fragment pliku który należy wyedytować u mnie po przeróbkach wygląda tak: KOD //----------------------------------------- // Connect //----------------------------------------- if ( $this->obj['persistent'] AND ! IPS_MAIN_DB_CLASS_LEGACY ) { $this->connection_id = mysql_pconnect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] , $this->obj['force_new_connection'] ); mysql_query('SET character_set_connection=latin2', $this->connection_id); mysql_query('SET character_set_client=latin2', $this->connection_id); mysql_query('SET character_set_results=latin2', $this->connection_id); mysql_query("set names latin2;"); } else { if ( IPS_MAIN_DB_CLASS_LEGACY ) { $this->connection_id = mysql_connect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] ); mysql_query('SET character_set_connection=latin2', $this->connection_id); mysql_query('SET character_set_client=latin2', $this->connection_id); mysql_query('SET character_set_results=latin2', $this->connection_id); mysql_query("set names latin2;"); } else { $this->connection_id = mysql_connect( $this->obj['sql_host'] , $this->obj['sql_user'] , $this->obj['sql_pass'] , $this->obj['force_new_connection'] ); mysql_query('SET character_set_connection=latin2', $this->connection_id); mysql_query('SET character_set_client=latin2', $this->connection_id); mysql_query('SET character_set_results=latin2', $this->connection_id); mysql_query("set names latin2;"); } } if ( ! $this->connection_id ) Bez tych zmian do bazy trafiają krzaczki -> więc choćby nie wiem jak cudować krzaczki i tak będą pobrane -------------------- |
|
|
|
śro, 15 mar 2006 - 07:18
Post
#5
|
|
|
Znawca ![]() ![]() ![]() Grupa: Użytkownicy Postów: 319 Dołączył: wto, 20 gru 05 Skąd: Belgia Korzystam z IPB 2.3 |
dzieki, ja juz swoj problem rozwiazalem ale napisz to do artykulow, napewno sie komus przyda, u mnie musialem scignac mysql i rezcnie pozamieniac kodowanie z latin1 na latin2, poprzez EditPlus2
i potem ponownie ja wgrac pozdro. -------------------- ![]() ha :P kupilem sobie licencje :D |
|
|
|
śro, 15 mar 2006 - 13:23
Post
#6
|
|
|
Stara się ![]() Grupa: Użytkownicy Postów: 16 Dołączył: czw, 23 lut 06 |
Fakt MySQL (nie pamiętam od której wersji) ma właśnie ten problem... że wszystkie tabele wrzuca jako latin1 - ja zanim zainstaluje skrypt na serwerze zawsze edytuje pliki gdzie są "komendy" dla SQL'a i zawsze na końcu każdego "rozkazu" (crate table) dopisuje ręcznie DEFAULT CHARSET=latin2; - w ten sposób mam pewność ze tworzą się dobre "polskie" tabelki
Ten post edytował mcstar śro, 15 mar 2006 - 13:24 -------------------- |
|
|
|
pią, 15 gru 2006 - 14:43
Post
#7
|
|
|
Znawca ![]() ![]() ![]() Grupa: Użytkownicy Postów: 319 Dołączył: wto, 20 gru 05 Skąd: Belgia Korzystam z IPB 2.3 |
Witam, ponownie przenioslem baze i znow mam problem z krzaczkami a raczej pytajnikami bo wlasnie takie znaki sie wyswietlaja u mnie na forum.
W bazie mam kodowanie latin2 tam samo na forum i baza po otwarciu nie ma w sobie krzaczkow a polskie litery. Czy ktos mial podobny problem ? System porowna generlany w bazie mam utf-8 i nie moge zmienic, czy to jest problemem ? -------------------- ![]() ha :P kupilem sobie licencje :D |
|
|
|
pią, 15 gru 2006 - 15:10
Post
#8
|
|
![]() master Grupa: Administratorzy Postów: 792 Dołączył: śro, 14 gru 05 Skąd: szczecin |
znaki zapytania generalnie sa przez utf w ktorejs fazie
rozwiazanie przy exporcie bazy sprawdzic jakie sa ustawienia zmiennych polaczenia i wynikow z bazy a nastepnie przy wrzucaniu zrobic takie same wartosci przewaznie w tedy dziala no jeszcze jest motyw ze phpmyadmin exporty robi w utf zostaje metoda prob i bledow w tym zeby zadzialalo dobrze -------------------- Insanity: doing the same thing over and over again and expecting different results.
|
|
|
|
pią, 15 gru 2006 - 15:12
Post
#9
|
|
|
Stara się ![]() Grupa: Użytkownicy Postów: 16 Dołączył: czw, 23 lut 06 |
No jeśli używasz nadal IPB 2.1.x to rozwiązaniem problemu będzie wyedytowanie 1 pliku, troszkę wyżej masz napisane co trzeba wyedytować i co i gdzie dopisać. Jeśli masz już IPB 2.2 to zerknij do tego tematu (sprawa praktycznie taka sama, tylko trzeba zmienić 2 pliki): http://ibplanet.pl/index.php?showtopic=724...amp;#entry40835
Jeśli w bazie masz polskie litery, to nie ma się czym przejmować. Pozmieniaj pliki ustaw na forum ISO i musi wszystko działać. (Generelanie edycja tego pliku(ów) sprowadza się do "wymuszenia" kodowania latin2 w połączeniu jakie ustala php z bazą, więc jeśli masz bazę w latin2 to wszystko będzie działać.) Ten post edytował mcstar pią, 15 gru 2006 - 15:15 -------------------- |
|
|
|
pią, 15 gru 2006 - 23:11
Post
#10
|
|
|
Znawca ![]() ![]() ![]() Grupa: Użytkownicy Postów: 319 Dołączył: wto, 20 gru 05 Skąd: Belgia Korzystam z IPB 2.3 |
czy aby to wymuszenie nie spowalnia pracy skryptu ? bo jednak za kazdym razem zajmuje pare ulamkow sekundy przez to ze server daje takie kodowanie a forum chce takie ?
-------------------- ![]() ha :P kupilem sobie licencje :D |
|
|
|
sob, 16 gru 2006 - 00:02
Post
#11
|
|
![]() master Grupa: Administratorzy Postów: 792 Dołączył: śro, 14 gru 05 Skąd: szczecin |
kazde zapytanie do bazy powoduje jakies opoznienia to raczej jest oczywiste
tak w woli dygresji do tego wklejania w pliku od bazy to to wszystko wystarczy wkleic raz(ja mam tylko to i dziala jak trzeba) KOD mysql_query('SET character_set_server = utf8'); mysql_query('SET collation_connection = utf8_general_ci'); mysql_query('SET character_set_client = utf8'); mysql_query('SET character_set_results = utf8'); przed KOD return TRUE; w function connect() . no oczywiscie kodowanie trzeba ustawic sobie odpowiednie} a teraz wrocmy do problemu to teoretycznie jako ze tabele w instalce/upgradzie nie maja wpisanego jakie maja charset collation to w przypadku tworzenia nowech tabel tworzone sa one z charsetem w jakim jest baza w ktorej sa one tworzone i teraz motyw z tym ze po upgradzie sie roznia wynikac moze tylko z tego ze baza nie jest od poczatku na tym serwerze tylko forum bylo przenoszone a jak wiemy phpmyadmin przy exporcie dodaje te wartosci do struktur tabel wiec nawet przy innym charsecie bazy do ktorej importujemy taki plik beda one mialy charset z poprzedniej bazy danych jak sie nie rusza bazy i nie zmieniaja sie zadne zmiennne odnoszace sie do polaczenia zawsze bedzie dzialac dobrze moze troche zakrecone ale sami mozecie przetestowac sobie w kazdej chwili tworzac np SQL CREATE TABLE tab1 (
wlog_id int(10) NOT NULL auto_increment, wlog_mid mediumint(8) NOT NULL default '0', wlog_notes text NOT NULL, PRIMARY KEY (wlog_id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE tab2 ( wlog_id int(10) NOT NULL auto_increment, wlog_mid mediumint(8) NOT NULL default '0', wlog_notes text NOT NULL, PRIMARY KEY (wlog_id) ) ENGINE=MyISAM; -------------------- Insanity: doing the same thing over and over again and expecting different results.
|
|
|
|
sob, 16 gru 2006 - 00:13
Post
#12
|
|
|
Stara się ![]() Grupa: Użytkownicy Postów: 16 Dołączył: czw, 23 lut 06 |
Dokładnie każde zapytanie trochę spowolni, ale taka modyfikacja NIE spowolni na tyle żeby stało się to zauważalne. Jeśli napiszesz jakiegoś moda do forum, który będzie miał coś pobrać z bazy czyli wykonać SELECT to taki mod na 100% spowolni Ci skrypt bardziej niż ta modyfikacja
Co do wypowiedzi przedmówcy, zgadza się... wystarczy teoretycznie wkleić raz przed return TRUE, ale spotkałem się kiedyś z głosami że nie u wszystkich to zadziałało więc... zaproponowałem wersję, która już musi działać... - wybór oczywiście sam możesz dokonać. Tak czy owak nie obawiaj się tego że zostanie to wykonane w 1 przypadku 1 raz a w drukim 3 razy bo są if'y KOD mysql_query('SET character_set_server = latin2');
mysql_query('SET collation_connection = latin2_general_ci'); mysql_query('SET character_set_client = latin2'); mysql_query('SET character_set_results = latin2'); -------------------- |
|
|
|
czw, 21 gru 2006 - 21:31
Post
#13
|
|
|
Znawca ![]() ![]() ![]() Grupa: Użytkownicy Postów: 319 Dołączył: wto, 20 gru 05 Skąd: Belgia Korzystam z IPB 2.3 |
a to tez pod 2.2.1 ?
-------------------- ![]() ha :P kupilem sobie licencje :D |
|
|
|
czw, 21 gru 2006 - 21:50
Post
#14
|
|
|
Stara się ![]() Grupa: Użytkownicy Postów: 16 Dołączył: czw, 23 lut 06 |
Tak można to użyć pod 2.2.1 bez najmniejszego problemu IPB nie wprowadziło jakiś radykalnych zmian do struktury plików odpowiedzialnych za łączenie się z MySQL'em od dłuższego czasu
-------------------- |
|
|
|
![]() ![]() |
|
Wersja Lo-Fi | Aktualny czas: wtorek, 22 maj 2012 - 01:56 |