Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Нашел интересный мод для редактирования постов. Все хорошо, но проблема с русским. Работает только с UTF-8, а у меня Windows - 1251
"о сколько раз твердили миру..."
а есть рациональное объяснение зачем цепляться за 1251?
Ну, что есть, то есть.. Переводить на UTF пока не собираюсь. Как говорится - работает - не трожь !
Так что - в морг ? Или есть варианты с этим модом ?
Отсылай ответ в своей кодировке, какие еще тут варианты.
iconv
<?
if(isset($_POST['utf'])) header("Content-type: text/html; charset=windows-1251");
define('PUN_ROOT', '../../');
require PUN_ROOT.'include/common.php';
require PUN_ROOT.'include/parser.php';
require PUN_ROOT.'lang/'.$pun_user['language'].'/topic.php';
$action = $_POST['action'];
$id = $_POST['id'];
if ($action == "get" && is_numeric($id)) {
$result = $db->query('SELECT message, edited, edited_by FROM '.$db->prefix.'posts WHERE id = '.$id) or error('Unable to fetch post info', __FILE__, __LINE__, $db->error());
$post = $db->fetch_assoc($result);
echo $lang_topic['Update'].'<!-- -->'.$lang_topic['Cancel'].'<!-- -->'.$lang_topic['Saving'];
echo '<!-- -->'.strip_tags($post['message']).'<!-- -->'. parse_message(strip_tags($post['message']), 0);
if ($post['edited'] != '')
echo '<!-- --><p class="postedit"><em>'.$lang_topic['Last edit'].' '.pun_htmlspecialchars($post['edited_by']).' ('.format_time($post['edited']).')</em></p>'."\n";
} elseif ($action == "update" && isset($_POST['message']) && is_numeric($id)) {
$message = strip_tags($_POST['message']);
$edited_time = time();
$result = $db->query('UPDATE '.$db->prefix.'posts SET message=\''.$db->escape($message).'\', edited='.$edited_time.', edited_by=\''.$db->escape($pun_user['username']).'\' WHERE id='.$id) or error('Unable to update post info', __FILE__, __LINE__, $db->error());
echo parse_message($message, 0);
echo "\t\t\t\t\t".'<p class="postedit"><em>'.$lang_topic['Last edit'].' '.pun_htmlspecialchars($pun_user['username']).' ('.format_time($edited_time).')</em></p>'."\n";
}
?>
А куда его (iconv) тут запихать ?
сразу оговорюсь - это путь через задний проход
вот здесь близко: iconv + буффер
куда это пихать сам решай. пример рабочий.
идея в том, чтобы выдавать данные в той кодировке, какую ждет запрашивающая сторона, а при записи надо делать обратную перекодировку.
твой фрагмент не говорит ни о чем...
мучайся
if(isset($_POST['utf'])) header("Content-type: text/html; charset=windows-1251");
Что сие значит? Попробуй без всяких if, слать свой контент-тайп.
Что сие значит? Попробуй без всяких if, слать свой контент-тайп.
убрал if - не помогает
Добавлено спустя 6 минут 54 секунды:
artoodetoo
Помогла вставка $message = iconv('UTF-8','CP1251', $message);
перед UPDATE
Спасибо !!!
спасибо и от меня! себе тоже прикрутил )))
Только вот проблема - в IE не работает
Да, и у меня в осле не хочет работать, только слева надпись появляется "Загрузка..." и все Хотя, в осле вообще мало что работает
как же меня это осел достал сцуко...
Главный косяк в том, что большинство юзверей ездят на осле. Они не сидят в опере, не держат огненных лис и не учавствуют в сафари ... Если бы осел не был так популярен, сколько бы аспирина сэкономили
если у вас так в edit.php
$message = iconv('UTF-8','CP1251', $message);
$result = $db->query('UPDATE '.$db->prefix.'posts SET message=\''.$db->escape($message).'\', edited='.$edited_time.', edited_by=\''.$db->escape($pun_user['username']).'\' WHERE id='.$id) or error('Unable to update post info', __FILE__, __LINE__, $db->error());
по после это (перед echo '<message>'.parse_message($message, 0).'</message>';)
добавьте
$message = iconv('CP1251', 'UTF-8', $message);
это проблема ие,ему нада указывать в js кодировку,но лучше взаимодействие фронтэнд->бэкенд делать в utf
Страницы 1
Тема закрыта