ďťż
Podstrony
|
telcocafePobieram z bazy trochę tekstu niestety wyświetla się on bez znaków diakrytycznych.Zastępowane są one znakami zapytania. Podejżewam że jest to problem związany z ustawieniami bazy danych, kodowania w bazie. Moglibyście mi powiedzieć co jest nie tak ? Pozdrawiam. Mówi się, że poprawny jest latin2. Jak kombinowałem, wyszło że latin1 i tekst przekonwertowany do ISO-8859-2 ;) Zaraz nie czaje to znaczy że nie wystarczy jeśli tylko i wyłącznie ustawie w bazie koldowanie ? Musze jeszcze konwertować na te 'dziwaczne' znaczki, znaki diakrytyczne w tekscie zapisywanym do bazy ? Według mnie kodowanie w bazie musisz ustawić na takie samo jak w dokumencie... Kiedy otwieram Navicat'em bazę widzę że jest to diabelne kodowanie ustawione tak jak być powinno. Innymi słowy znaki się wyświetlają. Natomiast jak pobieram dane przez PHP to nie ma zmiłuj. Zaraz nie czaje to znaczy że nie wystarczy jeśli tylko i wyłącznie ustawie w bazie koldowanie ? Musze jeszcze konwertować na te 'dziwaczne' znaczki, znaki diakrytyczne w tekscie zapisywanym do bazy ? Może ktoś wejdzie, i napisze czy jest jakieś przystępne kodowanie ;) Według mnie kodowanie w bazie musisz ustawić na takie samo jak w dokumencie... Dokładnie. Ja robiłem tak, że najpierw tekst przerobiłem na ISO-8859-2, później wrzuciłęm go do bazy jako Latin1 i ładnie wszystko czytało (przy ustawionym ISO-8859-2 w dokumencie). Kiedy otwieram Navicat'em bazę widzę że jest to diabelne kodowanie ustawione tak jak być powinno. Innymi słowy znaki się wyświetlają. Natomiast jak pobieram dane przez PHP to nie ma zmiłuj. To może sprawdź, jakie ten "Navicat" ma ustawione kodowanie. I dopiero tekst z tego charsetu przerób na ustawiony w dokumencie (HTML). Użytkownik DJ_ProG edytował ten post 04 październik 2006, 14:28 Spróbuj tak, jak łączysz się z bazą (nie wiem czy includujesz jakis plik, czy piszesz calość). W każdym razie zaraz po wywołaniu funkcji: mysql_connect() mysql_select_db() daj: mysql_query("SET CHARACTER SET utf8"); Jeśli stronę wyświetlasz w utf-8, jeśli w is0-8859-2 to zmień w tym zapytanniu wyżej Poczytaj sobie FAQ Przedwczoraj napisałem o tym. Poczytaj sobie FAQ Przedwczoraj napisałem o tym. Nadal jest coś nie tak do diaska. Plik klasy php ktorej uzywam do laczenia sie z serverem. <?php class MySQL { /* Query result */ var $result; var $result_num_rows; /* Connection identyfier */ var $connection; /* Errors */ var $errorType; var $erroCode; /* CONNECTS TO THE SERVER */ function connect($host, $database, $user, $password) { if(!$this->connection = @mysql_connect($host, $user, $password)) { $this->errorType = 'CONNECTION_ERROR'; $this->erroCode = '(100)'; return false; } else { if(!mysql_select_db($database,$this->connection)) { $this->errorType = 'CONNECTION_ERROR'; $this->erroCode = '(101)'; return false; } return true; } } function query($query) { if(!$this->result = @mysql_query($query,$this->connection)) { $this->errorType = 'QUERY_ERROR'; $this->erroCode = '(100)'; return false; } else { return true; } } /* CREATING MULTI DIMENSIONS ARRAY FROM QUERY RESULT */ function result_to_multi_array($database,$table) { $fields = mysql_list_fields($database, $table, $this->connection); $columns = mysql_num_fields($fields); $i=0; while($row = mysql_fetch_assoc($this->result)) { for ($j=0;$j<$columns;$j++) { $array[$i][mysql_field_name($fields, $j)] = $row[mysql_field_name($fields, $j)]; } $i++; } return $array; } function get_num_rows() { $this->result_num_rows = mysql_num_rows($this->result); if($this->result_num_rows == 0) { $this->errorType = 'EMPTY_QUERY_ERROR'; $this->erroCode = '(100)'; return false; } return true; } function get_num_cols($database,$table) { $fields = mysql_list_fields($database, $table, $this->connection); return mysql_num_fields($fields); } /* CREATING ARRAY THAT CONTAINS COLS NAMES ORDERED BY NUMBERS */ function get_cols_names($database,$table) { $fields = mysql_list_fields($database, $table, $this->connection); for($i=0;$i<mysql_num_fields($fields);$i++){ $array[$i] = mysql_field_name($fields, $i); } return $array; } } ?> Jest znacznik meta: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> Kodowanie ustawia mi się na stronie. Tylko dlaczego na PHPMyAdmin i na Navicat'cie wyświetlają się znaki diakrytyczne a na mojej stronie nie !? edit> code na codebox zmieniem edit>> kod odpowiedzialny za zadawanie zapytania. $sql->query("SELECT * FROM lang WHERE lang_ext='".$language."'"); $lang = mysql_fetch_assoc($sql->result); Użytkownik orglee edytował ten post 04 październik 2006, 21:06 zobacz najpierw czy w bazie masz polskie znaki Jak to zobaczyć czy mam polskie znaki ? Jest wszystko ustawione tak jak napisałeś w FAQ. Otwórz baze danych i zobacz czy w wyrazach posiadajacych zwykle polskie znaki poprawnie ci sie wyswietlaja Tak dobrze się wyświetlają w Navicacie i PHPMyAdminie. (W sensie że znaki diakrytyczne sie dorbze wyswietlaja ) spróbuj SET CHARSET latin2 i poprawne kodowanie htmla, bo kurna takiego przypadku nie spotkalem :P Co masz na myśli przez 'poprawne kodowanie htmla' ? <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2" /> pozostale znaki nie wyswietlane z bazy ci sie dobrze wsywietlaja? Hehe [SOLVED] $sql->query("SET CHARACTER SET latin2"); Dziwna sprawa ale zadziałało :P Rrzeczywiście bardzo dziwna... A mówiłem, żeby ustawić takie samo kodowanie jak w pliku *.php? Super. A wiesz że ja nie widziałem co chcesz powiedzieć przez to ? Według mnie kodowanie w bazie musisz ustawić na takie samo jak w dokumencie... Nie znałem komendy SET CHARACTER SET latin2. |
|||
Sitedesign by AltusUmbrae. |