Приветствую. Столкнулся с такой проблемой.
Значить сам сайт в cp-1251, а форум в utf-8.
Хочу вывести последние темы с форума на сайт, но, ... вместо названия тем, выводятся крякобразы.
БД форума в utf-8
Как починить, помогите?
Код:$post=preg_replace('/{full_name}/',htmlentities($name, ENT_QUOTES,'cp-1251'), $block_forum_conf['forum_block']); $post=preg_replace('/{reply_count}/',$reply_count, $post); $post=preg_replace('/{view_count}/',$view_count, $post); $post=preg_replace('/{user}/',htmlentities($user, ENT_QUOTES,'cp-1251'), $post); $post=preg_replace('/{post_url}/',HTTP_PREFIX.$bb_url['value']."/showthread.php?goto=newpost&t=".$row["threadid"], $post); $post=preg_replace('/{user_url}/',HTTP_PREFIX.$bb_url['value']."/member.php?find=lastposter&t=".$row["threadid"], $post); $post=preg_replace('/{div_cl}/',$div_cl, $post); $post=preg_replace('/{shot_name_post}/',htmlentities($short_name, ENT_QUOTES,'cp-1251'), $post); $post=preg_replace('/{date}/',$date, $post); $block.=$post;
Вывод информации в uft-8 на странице в кодировке cp-1251
(Ответов: 14, Просмотров: 2155)
- 29.09.2011 15:33
- 29.09.2011 15:52
а где в Вашем коде сам процесс перекодирования из utf-8 в cp-1251?
что, то типа:
... mb_convert_encoding($post, "windows-1251", "utf-8");Спасибо сказали:
chak(29.09.2011), - 29.09.2011 15:57
doctordick,
А вот, кстати, нету... сейчас попробую, спасибо. - 29.09.2011 15:59
Вот нужный код для конвертации:
if (mb_check_encoding($post, 'UTF-8') && !mb_check_encoding($post, 'Windows-1251')){
$post= mb_convert_encoding($post, 'Windows-1251', 'UTF-8');
А вообще еще при обращении в БД вроде можно указать нужную кодировку. - 29.09.2011 16:04
Что-то не хочет работать... я уже даже через iconv пытался... может что-то не так делаю?
Весь код:
Код:<?php @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( 'display_errors', true ); @ini_set ( 'html_errors', false ); @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE ); define( 'ROOT_DIR', substr( dirname( __FILE__ ), 0, -12 ) ); define( 'ENGINE_DIR', ROOT_DIR . '/engine' ); require_once (ENGINE_DIR.'/data/block_forum_conf.php'); define("VB_HOST", "ADFSDFSDF" /*Хост*/); define("VB_BASE", "SDFSDFSDFSDF" /*имя базы форума*/); define("VB_USER", "SDFSDFSFSDF" /*Имя пользователя базы*/); define("VB_PASS", "SDFSDFSDF" /*Пароль к базе*/); define("VB_PREFIX", "" /*Префикс таблиц форума*/); define("HTTP_PREFIX", "" /*Префикс ссылок*/); /* Функция сохранения кеш (взята с API DLE, API не используется ввиду глючности множественных подключений модов с API) */ function cacheSave($fname, $vars) { $cache_dir = ENGINE_DIR."/cache/"; $filename = $fname.".tmp"; $f = @fopen($cache_dir.$filename, "w+"); @chmod('0777', $cache_dir.$filename); if (is_array($vars)) $vars = serialize($vars); @fwrite($f, $vars); @fclose($f); return $vars; } /* Функция загрузки с кеша (взята с API DLE, API не используется ввиду глючности множественных подключений модов с API) */ function cacheLoad($fname, $timeout=300, $type = 'text') { $cache_dir = ENGINE_DIR."/cache/"; $filename = $fname.".tmp"; if (!file_exists($cache_dir.$filename)) return false; if ((filemtime($cache_dir.$filename)) < (time()-$timeout)) return false; if ($type=='text'){ return file_get_contents($cache_dir.$filename); } else { return unserialize(file_get_contents($cache_dir.$filename)); } } $cache_time = intval( $block_forum_conf['forum_cache'] ); if ( $cache_time !=0) $cache_time = intval( $block_forum_conf['forum_cache'] ); else $cache_time = 7200; $forum_posts = cacheLoad( 'forum_posts', $cache_time, 'text' ); if ( !$forum_posts ) { $db->connect(VB_USER, VB_PASS, VB_BASE, VB_HOST); $bb_url = $db->super_query("SELECT value FROM " . VB_PREFIX . "setting WHERE varname='bburl'"); $flg_start=1; if ($block_forum_conf['bad_forum_for_block'] != "" && $block_forum_conf['good_forum_for_block'] == "") { $forum_bad = explode(",", $block_forum_conf['bad_forum_for_block']); $i=0; $l=count($forum_bad)-1; $close_thread=","; for($i=0; $i<=$l; $i++) { if($forum_bad[$i]!="") { $result0 = $db->query("SELECT *FROM " . VB_PREFIX . "forum WHERE forumid Like '".$forum_bad[$i]."'"); while($row0 = $db->get_row($result0)) { $close_thread=$close_thread.$row0["childlist"].","; } } } $close_thread=substr($close_thread,1,strlen($close_thread)-2); $close_thread = str_replace(",-1", "", $close_thread); if ($close_thread == "") { $forum_id = ""; } else { $forum_id = " WHERE forumid NOT IN ($close_thread)"; } } elseif ($block_forum_conf['bad_forum_for_block'] == "" && $block_forum_conf['good_forum_for_block'] != "") { $forum_good = explode(",", $block_forum_conf['good_forum_for_block']); $forum_id = " WHERE forumid IN('". implode("','", $forum_good) ."')"; } else $forum_id = ""; $result = $db->query("SELECT replycount, views, threadid, title, lastpost, lastposter FROM " . VB_PREFIX . "thread". $forum_id ." ORDER BY lastpost DESC LIMIT 0 ,".$block_forum_conf['count_post']); $num = $db->num_rows($result); $block = "<table width=\"100%\" height=\"100%\">"; while ($row = $db->get_row($result)) { if($flg_start==1) { $div_cl = "tbl_box_start"; } else { if($flg_start!=$num) { if($flg_start!=1) { $div_cl = "tbl_box"; } } else { $div_cl = "tbl_box_end"; } } $flg_start++; $short_name=$name=$row["title"]; quoted_printable_decode($name); if (strlen($name) > $block_forum_conf['leght_name']) $short_name = substr ($name, 0, $block_forum_conf['leght_name'])." ..."; $row["lastpost"] = $row["lastpost"] + $block_forum_conf['date_adjust']*60; switch (date("d.m.Y",$row["lastpost"])): case date("d.m.Y"): $date=date("Сегодня в H:i",$row["lastpost"]); break; case date("d.m.Y",(time()+ $block_forum_conf['date_adjust']*60)-86400): $date=date("Вчера в H:i",$row["lastpost"]); break; default: $date=date("d.m.Y H:i",$row["lastpost"]); endswitch; $user=$row['lastposter']; $reply_count=$row["replycount"]; $view_count=$row["views"]; $post=preg_replace('/{full_name}/',htmlentities($name, ENT_QUOTES,'cp-1251'), $block_forum_conf['forum_block']); $post=preg_replace('/{reply_count}/',$reply_count, $post); $post=preg_replace('/{view_count}/',$view_count, $post); $post=preg_replace('/{user}/',htmlentities($user, ENT_QUOTES,'cp-1251'), $post); $post=preg_replace('/{post_url}/',HTTP_PREFIX.$bb_url['value']."/showthread.php?goto=newpost&t=".$row["threadid"], $post); $post=preg_replace('/{user_url}/',HTTP_PREFIX.$bb_url['value']."/member.php?find=lastposter&t=".$row["threadid"], $post); $post=preg_replace('/{div_cl}/',$div_cl, $post); $post=preg_replace('/{shot_name_post}/',htmlentities($short_name, ENT_QUOTES,'cp-1251'), $post); $post=preg_replace('/{date}/',$date, $post); $block.=$post; } $db->free(); $db->connect(DBUSER, DBPASS, DBNAME, DBHOST); $forum_posts= $block."</table>"; cacheSave( 'forum_posts', $forum_posts); } echo $forum_posts; ?>
Эм, движок DLE, форум vB 4 - 29.09.2011 16:10
опять не вижу mb_convert_encoding
попробуйте последнюю строку кода заменить на:
echo mb_convert_encoding($forum_posts, "windows-1251", "utf-8"); - 29.09.2011 16:16
doctordick,
Нет, всё равно крякобразы...
---------- Сообщение добавлено 14:14 ---------- Предыдущее 14:14 ----------
Кстати, если тут, к примеру:
($short_name, ENT_QUOTES,'cp-1251'), $post);
указать кодировку вместо cp-1251, к примеру, utf-8, то заголовок темы попросту не выводиться.
---------- Сообщение добавлено 14:16 ---------- Предыдущее 14:14 ----------
pingvin,
Что-то не хочет работать код. Очевидно, я что-то не так делаю... - 29.09.2011 16:18
а собственно если переключаете кодировку в браузере на utf-8 Вы видите нормально посты с форума?
- 29.09.2011 16:33
doctordick,
Нет, при условии, если, как я писал выше поставить utf-8, то тема вообще не выводится, а если win-1251, то тоже крякообразы, но теперь по всему сайту.
---------- Сообщение добавлено 14:33 ---------- Предыдущее 14:28 ----------
Ох, я вчера копался и теперьу меня админка форума вся в крякобразах... ойойой... - 29.09.2011 16:33
а при условии, что будет как сначала ($short_name, ENT_QUOTES,'cp-1251'), $post); ?
Необходимо определиться на каком этапе происходит неверное перекодирование.
Еще попробуйте после этой строки: $short_name=$name=$row["title"];
вывести тайтл:
echo $short_name;
И поиграйте кодировкой в браузере: utf-8, windows-1251, что произойдет?
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Передача банковской кредитной информации | Кредиты | 24 | 01.01.2014 08:42 |
Системы продвижения сайтов и заработка- сбор информации | Оффтоп и свободные темы | 12 | 14.07.2011 19:20 |
Отображение информации на сайте на основе запроса посетителя | Софт, скрипты, сервисы | 5 | 04.12.2010 19:27 |
Вопрос по кодировке | Прочее | 2 | 06.01.2010 23:17 |
Интересные темы
вывод данных с таблицы wordpress
Инструкции по выводу данных с таблицы для определнных полей в форму wordpress, читайте здесь.