Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2007-01-22 15:41:06

TEXist
Гость

Проблемка с кодировкой

Сменил движок на Друпаловсий.
А он на Юникоде бегает.
PunBB у меня не в Юникоде.
Соотвественно этот вариант вывода на главную страницу сайта 15-то обновленных тем приводит к нестыковке кодировок:

<? include('http://www.***.ru/forums/extern.php?action=active'); ?>

Вот думаю что делать?
Кто-нибудь знает как решить проблемку?

Т.е. я вставляю это:

<? include('http://www.***.ru/forums/extern.php?action=active'); ?>

в блок Друпала, а там вместо русских букв иероглифы....
Кодировку я не могу поменять ни там ни там (это исключено).

#2 2007-01-22 15:46:09

hcs
Гость

Re: Проблемка с кодировкой

Придется шаманить с extern.php на предмет конвертирования в уникод

#3 2007-01-22 16:37:21

TEXist
Гость

Re: Проблемка с кодировкой

банально добавил в самый верх файла extern.php:

<meta http-equiv=Content-Type content=text/html; charset=utf-8>

По адресу:

http://www.***.ru/forums/extern.php?action=active

кодировка стала Юникодовская. Но проблему это почему-то не решило.

#4 2007-02-11 21:28:39

Dmytro
Гость

Re: Проблемка с кодировкой

Прямо противоположная проблема. Весь сайт в windows-1251, форум в Юникоде.

Хочу вывести на главную активные темы форума - выводит кракозябры.

Подскажите, как справиться? Форум в сборке win-1251 мне не нравится.

#5 2007-02-11 22:05:17

artoodetoo
Гость

Re: Проблемка с кодировкой

функция iconv() тебя спасет. http://php.ru/manual/function.iconv.html

#6 2007-02-12 16:29:00

Dmytro
Гость

Re: Проблемка с кодировкой

А как ее применить? Я в php --> 0

#7 2007-02-13 06:49:30

artoodetoo
Гость

Re: Проблемка с кодировкой

это плохо, когда 0. зачем тогда объяснять, все равно применить не сумеешь.
короче, надо вывод этих "активных тем" накопить в буфер, затем буфер конвертить iconv(), затем вывести через echo. тогда все будет в единой кодировке.

читать про буфер в доках по php: функции управления выводом ob_*().  http://php.ru/manual/ref.outcontrol.html
подсмотреть реализацию можно в PunBB. header.php, footer.php

#8 2007-02-14 21:40:13

Wolf
Гость

Re: Проблемка с кодировкой

А можно все-таки поподробнее на счет конвертации из UTF-8 в Windows-1251?

#9 2007-02-15 08:19:57

artoodetoo
Гость

Re: Проблемка с кодировкой

Cобственно конвертация:
$s = iconv('CP1251','UTF-8', $s); // из 1251 в уникод. поменяйте два первых аргумента местами - будет наоборот smile

Дополнительные сложности появляются, если вы на "портальную" страницу в одной кодировке вставляете куски с другой кодировкой и эти куски выводятся не в переменную, а сразу через 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)).'&hellip;';
  } 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>

#10 2007-11-07 19:23:32

hcs
Гость

Re: Проблемка с кодировкой

А ты уверен что тебе нужно конвертировать? У тебя сайт в утф, сервер отдает extern.php?action=active тоже в утф, что ты хочешь во что сконвертировать не понятно smile

#11 2007-11-07 20:54:54

Advan
Гость

Re: Проблемка с кодировкой

hcs пишет:

А ты уверен что тебе нужно конвертировать? У тебя сайт в утф, сервер отдает extern.php?action=active тоже в утф, что ты хочешь во что сконвертировать не понятно smile

Все, бросаю пить smile

#12 2008-02-21 14:05:55

Marss
Гость

Re: Проблемка с кодировкой

artoodetoo.
у меня чего-то не прокатило решение ((

#13 2008-02-22 07:27:44

artoodetoo
Гость

Re: Проблемка с кодировкой

а конкретно ЧТО?
мой пример пробовал без изменений? чем твоя вставка отличается от моего примера? что получилось?

Подвал доски

Под управлением FluxBB. Хостинг Hostens