Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.20 »   Проблемы с кодировкой
RSS

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

В админцентре вместо кириллицы в некорых пунктах "?????"

Текущий рейтинг темы: Нет
Выводить сообщения

<<Назад  Вперед>>Страницы: 1 2 * 3
Модераторы: aerograf, wsx
Печать
 
Drugold
Почетный участник


Откуда: Москва
Всего сообщений: 182
Рейтинг пользователя: 1


Ссылка


Дата регистрации на форуме:
7 авг. 2006
Видимо, в движке форума что-то изменилось. Не знаю как в 2.19, а в 2.18 ставил cp1251_general_ci и проблем с вопросиками не было. А здесь, получается, нет однозначного решения. :(

Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003

gedeon написал:
[q]
Даже ХХХPRO не знает как это сделать.
[/q]

Я знаю. У меня где-то с месяц назад была кодировка latin1 и шведское collation. Всё бы ничего, да из-за этого возникали проблемы с поиском, проблемы в фильтре внутри раздела, проблемы с отображением алфавита в админке и энциклопедии. Я решил это дело исправить. Проблема осложнялась тем, что база у меня была очень большая — порядка 60Mb - phpMyAdmin с такой нагрузкой ествественно не мог справится, пришлось искать альтернативу. Совершенно случайно наткнулся на просто чудесный скрипт Sypex Dumper (кто-то с этого форума подсказал) — рекомендую для backup'a и восстановления баз данных любого размера — быстро, удобно, качественно и гибко. В общем утилитка зарекомендовала себя с положительной стороны даже на проблемных хостингах. Ну так вот, с помощью этой утилиты я снял backup своей базы (можно снять не всю базу, там есть фильтр таблиц, но я снимал полностью всю), предварительно установив в dumper.php следующие значения, CHARSET = 'auto', RESTORE_CHARSET = 'forced->cp1251'), получился архивный файл в mysql-кодировке latin1 - на всякий случай его качнул, проверил, что русские символы в кодире latin1 имеются, и затем с этого файла эту же утилиту запустил на восстановление. В итоге эта утилита перевела базу из кодировки latin1 в кодировку cp1251 и восстановила дамп базы уже в новой кодировке. В результате я получил свою базу в кодировке cp1251. Поскольку у меня на серваке база была по умолчанию в кодировке latin1, а значит и клиент к ней по умолчанию подключался по этой кодировке, то вместо нормальных русских букв на форуме были вопросики. Ура, сказал я, значит всё сделал правильно :) Эта проблема обходится значительно проще - нужно перед каждым коннектом к базе вызвать запрос:
mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
В случае же с форумом intboard необходимо в файле bd/mysql.php раскоментировать (убрать двойной слеш //) строчки
mysql_query("SET NAMES 'cp1251'",$lastlink);
И всё ;)

И так, пути следующие:
1. Качаем утилитку Sypex Dumper
2. Выставляем в dumper.php следующие значения, CHARSET = 'auto', RESTORE_CHARSET = 'forced->cp1251') и закачиваем файлик на сервак в какую-нить папочку с доступом 777
3. Делаем backup базы
4. Восстанавливаемся из базы
5. Для форума в файле bd/mysql.php раскомментировать строчки mysql_query("SET NAMES 'cp1251'",$lastlink); (в двух местах)
6. Для остальных скриптов надо руками прописывать mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());

Ну и вот вам ссылка еще в помощь: http://sypex.net/encoding/

Теперь я счастливый обладатель неглючного поиска ;)
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001

gedeon написал:
[q]
Примерно то же самое должно быть и в IntBoard
[/q]

В IntBoard сделано иначе: те буквы, на которые которые статей нет, просто не выводятся. С разбиением алфавита на две части есть некоторые проблемы, хотя еще подумаю над этим.

Насчет кодировки — Gram дал весьма дельный совет. Я однажды столкнулся с подобным явлением на одном из комм. сайтов, и поступал примерно так же, только дамп снимал обычным phpMyAdmin (т.к. база была небольшая).


mazut написал:
[q]
Вывод- каждый хостер разный, не подстроиш под одну планку.
[/q]

Не все так ужасно, конечно, но многие проблемы действительно предусмотреть заранее более чем сложно.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
mazut
Начинающий

mazut
Откуда: Berlin
Всего сообщений: 45
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 июня 2007
Sypex Dumper пользуюсь давно, ишо с нюки, когда стояла. Как будет время выставлю на хост с новыми идеями
от Gram, отпишусь. Но поиск работает у меня нормально, без глюков.
mazut
Начинающий

mazut
Откуда: Berlin
Всего сообщений: 45
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 июня 2007
Ни чего не получается у меня.Наверно туплю где-то. Вот так сделал:

define('CHARSET', 'auto');

define('RESTORE_CHARSET' = 'forced->cp1251');

Получаю:

Parse error: syntax error, unexpected '=' in C:\xampp\htdocs\prob\dump\dumper.php on line 45

Без forced-> работает как положено.
Gram
Администратор

Gram
Откуда: Нижний Новгород
Всего сообщений: 1011
Рейтинг пользователя: 38


Ссылка


Дата регистрации на форуме:
23 июля 2003
Вот так надо:

define('CHARSET', 'auto');
define('RESTORE_CHARSET', 'forced->cp1251');
mazut
Начинающий

mazut
Откуда: Berlin
Всего сообщений: 45
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 июня 2007
Теперь все получилось, спасибо. :thumbup
mazut
Начинающий

mazut
Откуда: Berlin
Всего сообщений: 45
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 июня 2007
Наткнулся на проблему, мож и не такая важная, но она есть. В название темы невозможно вставить немецкие умляуты ö ä ü ß. В самих постах пролазит, а тут упирается. Как можно решить ет траблу?
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 3299
Рейтинг пользователя: 70


Ссылка


Дата регистрации на форуме:
29 сен. 2001
mazut, нужно подкторректировать файл xaphpi.php. В частности, процедуры getvar, build_sql привести к такому виду:
function &getvar($name) {
  if ((strpos($name,"_text")!==false && $name!="pv_text" && $name!="pm_text") || $name=="f_rules") {
      if (isset($_GET[$name])) $tmp = $_GET[$name];
      elseif (isset($_POST[$name])) $tmp= $_POST[$name];
  }
  else {
      if (isset($_GET[$name])) $tmp = htmlspecialchars($_GET[$name]);
      elseif (isset($_POST[$name])) $tmp= htmlspecialchars($_POST[$name]);
  }
  $tmp=str_replace('&amp;#','&#',$tmp);
  $tmp=db_slashes($tmp);
  return $tmp;
}

function &build_sql($prefix) {
  $tmp = "";
  $prefixlen = strlen($prefix);
  foreach ($_POST as $name=>$value) {
      if (substr($name,0,$prefixlen)==$prefix && strpos($name,"__")===false && $name!=$prefix."_id") {
           if (strpos($name,"_text")===false) $value=db_slashes(str_replace('&amp;#','&#',htmlspecialchars($value)));
           else $value=db_slashes($value);
         if ($tmp) $tmp.=", ";
           $tmp .= "$name=\"".$value."\"";
         }
  }
  return $tmp;
}

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
mazut
Начинающий

mazut
Откуда: Berlin
Всего сообщений: 45
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 июня 2007
Получилось, все функционирует. Спасибо :thumbup
<<Назад  Вперед>>Страницы: 1 2 * 3
Модераторы: aerograf, wsx
Печать
Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.20 »   Проблемы с кодировкой
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0931. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!