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

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

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

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

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

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

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


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


Ссылка


Дата регистрации на форуме:
7 авг. 2006
Форум установлен локально с нуля, Win2003 Standart SP1 Eng, Apache2.0.59, PHP5.2.3, MySQL4.1-22
Перед установкой форума в /db/mysql.php раскомментировал нужные строки:
[q]
mysql_query("SET NAMES 'cp1251'",$lastlink);
mysql_query("SET NAMES 'cp1251'",$lastlink);
[/q]

Однако, в админцентре, а именно, где указываются язык форума и статусы пользователей вместо текста: "???????"

mazut
Начинающий

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


Ссылка


Дата регистрации на форуме:
16 июня 2007
Была такая проблема на локалке. Потом, при создании новой базы, не указывал Kollation. Двиг потом вставал как надо, без вопросиков в админке. Сейчас стоит latin1_general_ci.
Drugold
Почетный участник


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


Ссылка


Дата регистрации на форуме:
7 авг. 2006
Спасибо, действительно помогло.
Думаю, эту особенность следует указать в документации к форуму.

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


Ссылка


Дата регистрации на форуме:
29 сен. 2001
mazut, а какой collation был указан при первой попытке? Правильным вообще-то является такой: cp1251_general_ci.

---
Спорить со мной по поводу того, что в IntB будет, а чего нет -- бесполезно!
Drugold
Почетный участник


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


Ссылка


Дата регистрации на форуме:
7 авг. 2006
XXXX Pro
Как это не пародоксально, но при cp1251_general_ci у меня проблемы с некоторыми пунктами в админке (вместо слов ???????).
А если сделать latin1_general_ci (оно же по-умолчанию при установке mysql), то проблем нет.

gedeon
Почетный участник


Всего сообщений: 119
Рейтинг пользователя: 2


Ссылка


Дата регистрации на форуме:
18 фев. 2007
[q]
Как это не пародоксально, но при cp1251_general_ci у меня проблемы с некоторыми пунктами в админке (вместо слов ???????).
А если сделать latin1_general_ci (оно же по-умолчанию при установке mysql), то проблем нет.
[/q]


У меня все было точно так же. При установке базы данных выбрал cp1251, и в админке появились ??????. Когда переустановил базу с latin1 ( она вообще сама по умолчанию устанавливается), то все стало нормально, но результат этого - список имен в админке представляет из себя абракадабру, и то же самое при создании энциклопедии - слова с одними буквами могут стоять совсем под другими буквами.

Я уже писал об этой проблеме ранее, но она так и осталась без ответа.

Я предлагал вообще сделать две строки с двумя алфавитами - русским и латинским, как в админке, так и в энциклопедии. Скажите, как отличить, буква А русская или латинская? Или буква В является латинской В или русской В?

Вот как выглядит у меня список пользователей

9 В З Р К G О L N Т S Э Е Ц Ю

причем под N стоят имена на русскую С, под В стоят имена на русскую и латинскую А, Г, под К стоят имена на И - одним словом несуразица какая-то.
Drugold
Почетный участник


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


Ссылка


Дата регистрации на форуме:
7 авг. 2006
Хотелось бы узнать, что по этому поводу думает XXXX Pro

Drugold
Почетный участник


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


Ссылка


Дата регистрации на форуме:
7 авг. 2006
gedeon
Напишите Ваш конфиг (ОС, версия Web-Server, PHP, MySQL) для статистики.

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

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


Ссылка


Дата регистрации на форуме:
23 июля 2003
Если создаёте базу с нуля, то для русскоязычного сайта надо устанавливать кодировку базы cp1251, а collation — cp1251_general_ci. Тогда никаких проблем, указанных выше не будет.

Если же у вас уже имеется база в latin1, то всё же посоветовал бы перевести её на cp1251.
gedeon
Почетный участник


Всего сообщений: 119
Рейтинг пользователя: 2


Ссылка


Дата регистрации на форуме:
18 фев. 2007
[q]
Если же у вас уже имеется база в latin1, то всё же посоветовал бы перевести её на cp1251.
[/q]


Даже ХХХPRO не знает как это сделать. Он советовал тоже мне сделать, только что будет дальше - никто не знает, а экспериментировать как то не хочется..
gedeon
Почетный участник


Всего сообщений: 119
Рейтинг пользователя: 2


Ссылка


Дата регистрации на форуме:
18 фев. 2007
Вот как список профессий выглядит на rabota.ru:
--------------------------------------------------------------------------

Выберите название профессии по алфавиту:

А Б В Г Д Е Ж З ИКЛМ Н ОПРСТ У Ф Х Ц Ч Ш Щ Э Ю Я

0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
-------------------------------------------------------------------------------

Если под какими то буквами есть вакансии, то буква выделаяется жирным шрифтом.

Примерно то же самое должно быть и в IntBoard
mazut
Начинающий

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


Ссылка


Дата регистрации на форуме:
16 июня 2007
Комп у меня чистый немец, без дополнительных языков. С cp1251 на локалке вопросики. Хост тоже немецкий, та-же трабла. На хостере стоит latin1_swedish_ci. Сам двиг работает без замечаний, толко в MySQL файле теперь одни вопросики, (у меня стоял тогда еще русский язык) но как-то ет дело трансформируется в руские буквы :biggrin. На русском хостере стоит cp1251 как положено, без вопросиков. Вывод- каждый хостер разный, не подстроиш под одну планку.
gedeon
Почетный участник


Всего сообщений: 119
Рейтинг пользователя: 2


Ссылка


Дата регистрации на форуме:
18 фев. 2007
потому и предлагаю вот такое решение - два алфавита, кириллица и латинский.
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.0886. Количество выполненных запросов: 19, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!