![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie,
mam mały problem z kodowaniem znaków... chodzi o to że na stronę wczytuję ostatnie tematy na forum wraz z linkami, problem tkwi w tym że plik generujący pobiera dane z bazy danych która ma kodowanie utf-8, a na stronie mam iso-8859-1 co powoduje wykrzaczanie liter z ogonkami ![]() skrypt generujący "ostatnie tematy na forum": Kod <?php // USTAWIENIA // (t) ilość wyświetlanych tematów $default_tps_number = 10; // (w) długość tytułów $default_tps_title_width = 60; // (s) miejsce, w jakim zostanie otwarty temat; topic - początek tematu, post - ostatni post $default_tps_show = 'post'; // (p) miejsce wyświetlania tematu $default_tps_display_place = '_blank'; // (a) pokazuje liczbe odpowiedzi; 1 - tak, 0 - nie $default_show_answers = 1; // (u) pokazuje autora postu; 2 - ostatniego, 1 - pierwszego, 0 - nie pokazuje autora $default_show_posters = 2; // (f) pokazuje nazwę forum, w którym znajduję się temat; 1 - tak, 0 - nie $default_show_forumname = 0; $adres_forum = 'http://forum.ogar200.pl'; // adres forum bez końcowego "/", z "http://" na początku // KONIEC USTAWIEN if($_GET['t']) { $t = $_GET['t']; } else { $t = $default_tps_number; } if($_GET['w']) { $w = $_GET['w']; } else { $w = $default_tps_title_width; } if($_GET['s']) { $s = $_GET['s']; } else { $s = $default_tps_show; } if($_GET['p']) { $p = $_GET['p']; } else { $p = $default_tps_display_place; } if($_GET['a']) { $a = $_GET['a']; } else { $a = $default_show_answers; } if($_GET['u']) { $u = $_GET['u']; } else { $u = $default_show_posters; } if($_GET['f']) { $f = $_GET['f']; } else { $f = $default_show_forumname; } include 'config.php'; if(!$db = mysql_connect($dbhost, $dbuser, $dbpasswd)) { echo '<b>Błąd!</b><br />Nie można połączyć się z bazą!'; } if(!mysql_select_db($dbname, $db)) { echo '<b>Błąd!</b><br />Nie można wybrać bazy danych!'; } $result = mysql_query("SELECT * FROM `". $table_prefix ."topics` WHERE forum_id ORDER BY `topic_last_post_id` DESC LIMIT 0 , ". $t); while($row = mysql_fetch_array($result)) { $out_title = '<a href="'. $adres_forum .'/viewtopic.php?f='. $row['forum_id'] .'&t='. $row['topic_id'] .'" target="'. $p .'">' .$row['topic_title']. '</a><br>'; if( $f ) { $result_forum = mysql_query("SELECT `forum_name` FROM `". $table_prefix ."forums` WHERE `forum_id` = '". $row['forum_id'] ."'"); $row['forum_name'] = mysql_result($result_forum, 0); $out_forum = '[<a href="'. $adres_forum .'/viewforum.php?f='. $row['forum_id'] .'" target="'. $p .'">'. $row['forum_name'] .'</a>] '; } if( $a ) { $out_answers = ' <font size=1 color="#FF9900" face="Tahoma">(<b>'. $row['topic_replies'] .'</b>) odpowiedzi</font>'; } if( $u ) { switch($u) { case 2: $poster[0] = $row['topic_last_poster_id']; $poster[1] = $row['topic_last_poster_name']; break; case 1: $poster[0] = $row['topic_poster']; $poster[1] = $row['topic_first_poster_name']; break; } $out_poster = '<br><font size=1 color="#FF9900" face="Tahoma">ostatnia przez: <a href="'. $adres_forum .'/memberlist.php?mode=viewprofile&u='. $poster[0] .'" target="'. $p .'">'. $poster[1] .'</a></font><br>'; } if(strlen($row['topic_title']) > $w) { $row['topic_title'] = substr($row['topic_title'], 0, $w); } $output .= $out_forum . $out_title . $out_answers . $out_poster .'<br/>'; } echo $output; mysql_close($db); ?> Próbowałem z str_replace, strtr(), ale nie wiem czy do końca poprawnie ![]() Z góry dziękuję za odpowiedzi i pozdrawiam, Piotr (ojs) Ten post edytował ojs 19.06.2009, 20:33:06 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 897 Pomógł: 40 Dołączył: 16.12.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Użyj funkcji iconv" title="Zobacz w manualu PHP" target="_manual.
-------------------- how many SEO experts does it take to change a light bulb,lightbulb,light,bulb,lamp,lighting,switch,sex,xxx
5-Reasons-why-you-should-NEVER-fix-a-computer-for-free |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety tego też próbowałem... wtedy nic się nie wyświetlało
![]() zastosowałem to tak: $row['topic_title'] = iconv("UTF-8","ISO-8859-1",$row['topic_title']) tylko nie wiem czy dobrze... EDIT wyświetlało się ale tylko do momentu wystąpienia polskiej litery, potem napis się urywał ![]() Ktoś może mi pomóc? ;( Ten post edytował ojs 19.06.2009, 20:40:01 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 420 Pomógł: 44 Dołączył: 22.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
spróbuj mb_convert_encoding kiedyś miałem podobny problem i pomogła
Ten post edytował patryczakowy 20.06.2009, 08:23:34 -------------------- Sztuką jest widzieć to czego nie widać.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 171 Pomógł: 32 Dołączył: 5.08.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Przecież Ty używasz kodowania bez polskich znaków ISO-8859-1, kodowanie z polskimi znakami to ISO-8859-2
Nie wystarczy przed pobraniem z bazy wysłać któregoś z tych zapytań, zależnie od kodowania Twojej strony ?
lub
Pozdrawiam -------------------- ---------------------------
"Jeżeli trzeci dzień z rzędu nie chce Ci się pracować tzn że dziś jest ŚRODA ! Algorytmy , Programowanie , Tworzenie WWW - SPRAWDŹ |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie musi być ISO-8859-1, Dreamweaver domyślnie przyjął takie kodowanie i zamienia Polskie znaki na inne ciągi znaków np:
[usuń spacje] Kod ą =>& # 2 6 1; ę =>& # 2 8 1; ś =>& # 3 4 7; ć =>& # 2 6 3; ;| nawet w między znacznikami [code] na tym forum te symbole zamieniaja sie na polskie literki... Więc zmiana kodowania na całej stronie nie ma sensu ![]() ferrero2, nie mogę zmienić kodowania bazy ponieważ wtedy tematy na forum mi się wykrzaczą bo tam jest UTF-8 ![]() patryczakowy, zastosowałem to do zminnej $row['topic_title'] składnią: Kod $row['topic_title']=mb_convert_encoding($row['topic_title'],'iso-8859-2','utf-8'); nie wyświetlała wogóle polskich znaków pomijając je Kod $row['topic_title']=mb_convert_encoding($row['topic_title'],'utf-8','iso-8859-2'); pojawiły się inne krzaczki zamiast Polskich liter ![]() Myślę sobie że jedynym rozsądnym roziązaniem było by korzystanie z tablic i pobieranie polskich znaków z ogonkami i zastępować je symbolami dla iso-8859-1, niestety nie znam pełnej składni a wszystkie próby kończyły się niepowodzeniem ![]() Pomocy! ![]() Ten post edytował ojs 20.06.2009, 08:41:19 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 420 Pomógł: 44 Dołączył: 22.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
skoro używasz iso-8859-1 to czemu do funkcij podajesz iso-8859-2?
-------------------- Sztuką jest widzieć to czego nie widać.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
jak zrobiłem do iso-8859-1 było identycznie
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 420 Pomógł: 44 Dołączył: 22.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
To spróbuj może coś pokombinować z kodem ASCII
-------------------- Sztuką jest widzieć to czego nie widać.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Teraz sobie uświadomiłem że zamiana kodowania nic nie da
![]() EDIT tak wygląda czysty plik wygenerowany przez skrypt http://forum.ogar200.pl/ostatnio.php dopiero na stronie pojawiają się cyrki Ten post edytował ojs 20.06.2009, 08:51:18 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 420 Pomógł: 44 Dołączył: 22.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
zawsze możesz tą stronę zaincludować w iframe
![]() ![]() -------------------- Sztuką jest widzieć to czego nie widać.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 9.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Niestety jestem zrażony do iframe
![]() ![]() znalazłem na forum wątek gdzie ktoś podał kod z zamianą znaków w tablicach... http://forum.php.pl/index.php?showtopic=94005 wykorzystałem kod w skrypcie i nie zamienia polskich ogonków niestety ![]()
A może w złym pliku to robię? Może powinienem to robić już przy samym includowaniu na stronie głównej? Poradziłem sobie, z tym że nie do końca... wkleje teraz kod z tablicami, z tym że skrypt tego forum drugą tablice zamieni na polskie znaki i nie będzie różnicy dlatego powkładam spację po znaku '&'.
Na tej stronie <a href="http://www.tony-franks.co.uk/UTF-8.htm" target="_blank">http://www.tony-franks.co.uk/UTF-8.htm</a> są znaki które mam uzyskać... z tym że nie poprawia mi tylko ź,ś,ą Miał ktoś z tym styczność? Proszę o pomoc! ![]() ROZWIĄZANE: wystarczyło zmienić na stronie głównej kodowanie na iso-8859-2, nie wykrzaczyło stronki odziwo. Dziękuję i temat do zamknięcia ![]() Pozdrawiam, ojs Ten post edytował ojs 20.06.2009, 15:36:21 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 23:23 |