Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Сменил движок на Друпаловсий.
А он на Юникоде бегает.
PunBB у меня не в Юникоде.
Соотвественно этот вариант вывода на главную страницу сайта 15-то обновленных тем приводит к нестыковке кодировок:
<? include('http://www.***.ru/forums/extern.php?action=active'); ?>
Вот думаю что делать?
Кто-нибудь знает как решить проблемку?
Т.е. я вставляю это:
<? include('http://www.***.ru/forums/extern.php?action=active'); ?>
в блок Друпала, а там вместо русских букв иероглифы....
Кодировку я не могу поменять ни там ни там (это исключено).
Придется шаманить с extern.php на предмет конвертирования в уникод
банально добавил в самый верх файла extern.php:
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
По адресу:
http://www.***.ru/forums/extern.php?action=active
кодировка стала Юникодовская. Но проблему это почему-то не решило.
Прямо противоположная проблема. Весь сайт в windows-1251, форум в Юникоде.
Хочу вывести на главную активные темы форума - выводит кракозябры.
Подскажите, как справиться? Форум в сборке win-1251 мне не нравится.
функция iconv() тебя спасет. http://php.ru/manual/function.iconv.html
А как ее применить? Я в php --> 0
это плохо, когда 0. зачем тогда объяснять, все равно применить не сумеешь.
короче, надо вывод этих "активных тем" накопить в буфер, затем буфер конвертить iconv(), затем вывести через echo. тогда все будет в единой кодировке.
читать про буфер в доках по php: функции управления выводом ob_*(). http://php.ru/manual/ref.outcontrol.html
подсмотреть реализацию можно в PunBB. header.php, footer.php
А можно все-таки поподробнее на счет конвертации из UTF-8 в Windows-1251?
Cобственно конвертация:
$s = iconv('CP1251','UTF-8', $s); // из 1251 в уникод. поменяйте два первых аргумента местами - будет наоборот
Дополнительные сложности появляются, если вы на "портальную" страницу в одной кодировке вставляете куски с другой кодировкой и эти куски выводятся не в переменную, а сразу через echo. В таком случае надо переадресовать вывод скрипта в буфер
Пример: страница в UTF-8 включает данные с форума, который в 1251.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Тестовая страница в кодировке UTF-8</title>
</head>
<body>
<h1>Заголовок</h1>
<p>какой-то статический текст</p>
<?php
// я собираюсь использовать данные с форума
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
// вывод последних тем форума
$num_topics = '10';
$result = $db->query('SELECT t.subject, t.id '.
'FROM '. $db->prefix.'topics AS t '.
'INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id '.
'LEFT JOIN '. $db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') '.
'WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.moved_to IS NULL ORDER BY t.last_post DESC LIMIT '. $num_topics)
or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
// включаю буферизацию
ob_start();
while($cur_topic = $db->fetch_assoc($result))
{
$caption = $cur_topic['subject'];
// truncate subject if necessary. approx 22 characters for 190px column
if (strlen($caption) > 22) {
$alt = ' title="'.pun_htmlspecialchars($caption).'"';
$caption = pun_htmlspecialchars(substr($caption, 0, 21)).'…';
} else {
$caption = pun_htmlspecialchars($caption);
$alt = '';
}
// это ECHO не попадет на страницу, пока я не захочу :)
echo "\t<ul><li><a href=\"".$pun_config['o_base_url'].'/viewtopic.php?id='.$cur_topic['id'].'"'.$alt.'>'.$caption."</a></li></ul>\n";
}
// беру содержимое буфера и выключаю буферизацию
$tmp = ob_get_contents();
ob_end_clean();
echo iconv('CP1251','UTF-8', $tmp);
?>
<p>еще один статический текст</p>
</body>
</html>
А ты уверен что тебе нужно конвертировать? У тебя сайт в утф, сервер отдает extern.php?action=active тоже в утф, что ты хочешь во что сконвертировать не понятно
А ты уверен что тебе нужно конвертировать? У тебя сайт в утф, сервер отдает extern.php?action=active тоже в утф, что ты хочешь во что сконвертировать не понятно
Все, бросаю пить
artoodetoo.
у меня чего-то не прокатило решение ((
а конкретно ЧТО?
мой пример пробовал без изменений? чем твоя вставка отличается от моего примера? что получилось?
Страницы 1
Тема закрыта