Wyciągam dane (treść tematów oraz ost. tematy jako ich nazwy) z forum MyBBoard i wczytuję do najprostrzej w świecie strony pisanej w html'u z rozszerzeniem .php ze względu na skrypty. Problem pojawia się już na starcie, mianowicie gdy skrypt wczytuje nazwy tematów, polskie znaki wyświetlają się poprawnie. Jednak jeśli zerknę na newsy, to już tychże znaków brak. W ich miejsca pojawiają się znaki zapytania "?". Strona posiada kodowanie UTF-8, tak samo jak forum z którego wyciągam treść. Niżej przedstawię ów skrypty:
Na początku strony:
Kod
<?php
$conn = @mysql_connect('localhost','user','haslo')
or die('Problem z polaczeniem do bazy danych: '.mysql_error());
mysql_select_db('baza');
?>
$conn = @mysql_connect('localhost','user','haslo')
or die('Problem z polaczeniem do bazy danych: '.mysql_error());
mysql_select_db('baza');
?>
Blok aktualności (newsy - tu nie wyświetlają się polskie znaki)
Kod
<?php
/*------------------------------*/
define("IN_MYBB", 1);
define("KILL_GLOBALS", 1);
define("NO_ONLINE", 1);
/*------------------------------*/
include("forum/inc/init.php");
/*------------------------------*/
$forumpath = $mybb->settings['bburl'];
require_once MYBB_ROOT."/inc/class_parser.php";
$parser = new postParser();
/*------------------------------*/
$connect = @mysql_connect("localhost", "user", "haslo") or die ("Brak lacznosci z serwerem.");
mysql_query('SET CHARSET windows-1255 ');
mysql_select_db("baza") or die ("Brak lacznosci z Baza Danych.");
$show_news = ("SELECT tid, replyto, fid, subject, uid, username, dateline, message, visible FROM forum_posts WHERE (fid = '4') AND (replyto = '0') ORDER BY tid DESC LIMIT 0,4");
$show_news_query = mysql_query($show_news) or die("Wystapil nieoczekiwany blad. Pracujemy nad tym. Przepraszamy i zapraszamy później.");
while($news = mysql_fetch_array($show_news_query))
{
$subject = $news[subject];
$message = $news[message];
$date_day = date("j", $news[dateline]);
$date_mounth = date("m", $news[dateline]);
$date_year = date("Y", $news[dateline]);
$time = date("H:i", $news['dateline']);
switch ($date_mounth) {
case '01': $date_mounth = 'Stycznia'; break;
case '02': $date_mounth = 'Lutego'; break;
case '03': $date_mounth = 'Marca'; break;
case '04': $date_mounth = 'Kwietnia'; break;
case '05': $date_mounth = 'Maja'; break;
case '06': $date_mounth = 'Czerwca'; break;
case '07': $date_mounth = 'Lipca'; break;
case '08': $date_mounth = 'Sierpnia'; break;
case '09': $date_mounth = 'Wrzesnia'; break;
case '10': $date_mounth = 'Pazdziernika'; break;
case '11': $date_mounth = 'Listopada'; break;
case '12': $date_mounth = 'Grudnia'; break;
default: $date_mounth = 'Blad!!!'; break;
}
echo "<div class='item'>";
echo "<h4 class='title'><a href='forum/showthread.php?tid=$news[tid]'>".$parser->parse_message($subject)."</a></h4>";
print (" <p class='meta'><small>Napisane ".$date_day." ".$date_mounth." ".$date_year." r. o godz. ".$time." przez <a href='forum/member.php?action=profile&uid=$news[uid]'><b>".$news[username]."</b></a>.</small></p> ");
print ("<p class='excerpt'></p><p>".$parser->parse_message($message)."</p>");
print ("</div>");
}
?>
/*------------------------------*/
define("IN_MYBB", 1);
define("KILL_GLOBALS", 1);
define("NO_ONLINE", 1);
/*------------------------------*/
include("forum/inc/init.php");
/*------------------------------*/
$forumpath = $mybb->settings['bburl'];
require_once MYBB_ROOT."/inc/class_parser.php";
$parser = new postParser();
/*------------------------------*/
$connect = @mysql_connect("localhost", "user", "haslo") or die ("Brak lacznosci z serwerem.");
mysql_query('SET CHARSET windows-1255 ');
mysql_select_db("baza") or die ("Brak lacznosci z Baza Danych.");
$show_news = ("SELECT tid, replyto, fid, subject, uid, username, dateline, message, visible FROM forum_posts WHERE (fid = '4') AND (replyto = '0') ORDER BY tid DESC LIMIT 0,4");
$show_news_query = mysql_query($show_news) or die("Wystapil nieoczekiwany blad. Pracujemy nad tym. Przepraszamy i zapraszamy później.");
while($news = mysql_fetch_array($show_news_query))
{
$subject = $news[subject];
$message = $news[message];
$date_day = date("j", $news[dateline]);
$date_mounth = date("m", $news[dateline]);
$date_year = date("Y", $news[dateline]);
$time = date("H:i", $news['dateline']);
switch ($date_mounth) {
case '01': $date_mounth = 'Stycznia'; break;
case '02': $date_mounth = 'Lutego'; break;
case '03': $date_mounth = 'Marca'; break;
case '04': $date_mounth = 'Kwietnia'; break;
case '05': $date_mounth = 'Maja'; break;
case '06': $date_mounth = 'Czerwca'; break;
case '07': $date_mounth = 'Lipca'; break;
case '08': $date_mounth = 'Sierpnia'; break;
case '09': $date_mounth = 'Wrzesnia'; break;
case '10': $date_mounth = 'Pazdziernika'; break;
case '11': $date_mounth = 'Listopada'; break;
case '12': $date_mounth = 'Grudnia'; break;
default: $date_mounth = 'Blad!!!'; break;
}
echo "<div class='item'>";
echo "<h4 class='title'><a href='forum/showthread.php?tid=$news[tid]'>".$parser->parse_message($subject)."</a></h4>";
print (" <p class='meta'><small>Napisane ".$date_day." ".$date_mounth." ".$date_year." r. o godz. ".$time." przez <a href='forum/member.php?action=profile&uid=$news[uid]'><b>".$news[username]."</b></a>.</small></p> ");
print ("<p class='excerpt'></p><p>".$parser->parse_message($message)."</p>");
print ("</div>");
}
?>
Blok ost. tematy (tu wyświetlają się poprawnie polskie znaki)
Kod
<?php
$connect = @mysql_connect("localhost", "user", "haslo") or die ("Brak lacznosci z serwerem.");
mysql_query('SET CHARSET utf8');
mysql_select_db("baza") or die ("Brak lacznosci z Baza Danych.");
$tem = mysql_query("SELECT * FROM `forum_threads` ORDER BY `tid` DESC LIMIT 15");
while ($temat = mysql_fetch_row($tem)) {
if(strlen($temat[2]) > 23){
$tematn = substr($temat[2],0, 40);
$nazwa_tematu = ''.$tematn.'...';
}else{
$nazwa_tematu = $temat[2];
}
echo "> <a href='forum/showthread.php?tid=".$temat[0]."'><strong>".$nazwa_tematu."</strong> →</a><br>";
}?>
$connect = @mysql_connect("localhost", "user", "haslo") or die ("Brak lacznosci z serwerem.");
mysql_query('SET CHARSET utf8');
mysql_select_db("baza") or die ("Brak lacznosci z Baza Danych.");
$tem = mysql_query("SELECT * FROM `forum_threads` ORDER BY `tid` DESC LIMIT 15");
while ($temat = mysql_fetch_row($tem)) {
if(strlen($temat[2]) > 23){
$tematn = substr($temat[2],0, 40);
$nazwa_tematu = ''.$tematn.'...';
}else{
$nazwa_tematu = $temat[2];
}
echo "> <a href='forum/showthread.php?tid=".$temat[0]."'><strong>".$nazwa_tematu."</strong> →</a><br>";
}?>
Nade wszystko, z pewnego forum webmasterskiego wykorzystałem zapytanie
Kod
SET NAMES utf8 COLLATE utf8_polish_ci
co dało *!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ , bez zmian - i tu niestety wysiadam. Wszystkie powyższe rozwiązania to po prostu kopia z innych forów. Nie znam się na tym zbytnio, a więc kieruję prośbę do Was o pomoc. Gdyby ktoś chciał jeszcze zobaczyć stronę 'live' to może to zrobić klikając tu.