Перейти к контенту
  • 0

Кодировки в IPB 2.1.х


ross104

Вопрос

Знаю что этот вопрос тут 100 раз поднимался и все дружно посылают в Поиск по слову Кодировка но решения ни в одной теме нет! Поэтому предлагаю решение даного вопроса оставить в отдельном топике.

 

Так вот:

после обновления с 2.1.1 на 2.1.3 доска начала генерить надписи вида "???????????" вмето "Користувачі"

Даные сервака

PHP version 4.3.11

MySQL version 4.1.13-standard

Apache version 1.3.33 (Unix)

 

На серваке никто и ничего менять не будет поскольку он виртуальный и висит в штатах тоесть решать надо кустарными методами.

 

Заранее благодарю за ответ как это исправить. Думаю поблагодарат и многие другие пользователи которые послушно идут в тему Кодироки читают 13 страниц и молча ищут решения проблемы сами.

 

 

Заголовок темы отредактирован.

Тема закреплена.

Изменено пользователем sM1Le
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 344
  • Создана
  • Последний ответ

Лучшие авторы в этом вопросе

Лучшие авторы в этом вопросе

Загружено фотографий

Рекомендуемые сообщения

  • 0

А также на

define('RESTORE_CHARSET', 'forced->cp1251_general_ci');

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Возникла проблема после конвертации БД...

Пользователи в которых ники были с буквой "і" (украинской) не могут зайти на форум, пишет что нет пользователя с таким ником...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Обновите кеш форумов.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Сегодня наконец получили лицензию, пробовал проапгрейдиться с v2.0.4 до последней. На сервере

show variables like '%char%';

+--------------------------+----------------------------------+

| Variable_name | Value |

+--------------------------+----------------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

 

естественно, в начале решил попробовать апгрейд на своей рабочей станции. у нее:

 

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | cp1251 |

| character_set_results | latin1 |

| character_set_server | cp1251 |

| character_set_system | utf8

 

Вроде сами сообщения перенеслись корректно, а вот в админке вверху страницы все пояснения вопросиками. Сами меню -- нормально.

 

оопс, не туда написал... я обновился до 2.3.6

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Сегодня наконец получили лицензию, пробовал проапгрейдиться с v2.0.4 до последней. На сервере

show variables like '%char%';

+--------------------------+----------------------------------+

| Variable_name | Value |

+--------------------------+----------------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

 

естественно, в начале решил попробовать апгрейд на своей рабочей станции. у нее:

 

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | cp1251 |

| character_set_results | latin1 |

| character_set_server | cp1251 |

| character_set_system | utf8

 

Вроде сами сообщения перенеслись корректно, а вот в админке вверху страницы все пояснения вопросиками. Сами меню -- нормально.

 

оопс, не туда написал... я обновился до 2.3.6

Можно попробовать для начала разобраться со старой БД, чтобы она была в верной кодировке: http://wiki.iblink.ru/sources/db/mysqlcharsetconversion

А так этого не всегда достаточно, часто в коде есть запрос SET NAMES, который изменяет эти значения, лучше обратиться в КЦ с этим, говорят помогают :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А так этого не всегда достаточно, часто в коде есть запрос SET NAMES, который изменяет эти значения, лучше обратиться в КЦ с этим, говорят помогают :D

КЦ -- это что?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
КЦ -- это что?

Клиентцентр.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Таже самая проблема с кодировками при переезде с хостинга на VPS, пробовал все предложенные решения, в итоге выдавал половину форума в UTF-8 (????????) половина в CP1251, решил переустановить движок. При установки вот что выдал:

 

Внимание!

Указанные ниже ошибки должны быть обязательно исправлены перед тем, как продолжить!
Пожалуйста, вернитесь назад и попробуйте снова!

INSERT INTO ibf_cache_store (cs_key, cs_value, cs_extra, cs_array) VALUES ('skin_id_cache', '', '', 1);

дХВМЙТХАЭБСУС ЪБРЙУШ 'skin_id_cache' РП ЛМАЮХ 1

 

Люди помогите, уже третий день мучаюсь! :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Форум 2.1.7. После восстановления из бэкапа стала неорректно отображаться кодировка. Знаки вопросов ?????-???-????

Подскажите, как можно исправить. Пробовал предложенные варианты - не помогает.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
В бекапе текст читается Блокнотом? а более продвинутыми редакторами? Какая кодировка установлена в дампе при создании таблиц? Какая кодировка по умолчанию у базы, в которую загружается дамп? Через phpMyAdmin видно содержимое?
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Изрядно промучившись с кодировками (у меня тоже выдавались вопросики вместо русских букв), наткнулся на простое, немного топорное, но 100% рабочее решение.

Дело в том, что перекодирование в 1251 и ISO-18859-1 дает совершенно разные результаты. В первом случае это вопросики, во втором - спокойно перекодируемые каракули вот такого вида:

 

http://s53.radikal.ru/i141/0903/1e/3ff41eb723b8.jpg

 

Все, что вам нужно - добиться, чтобы ваш текст выглядел именно так, и тогда весь форум будет прекрасно отображаться в UTF-8. Сделать это очень просто:

 

1. Делаете дамп базы в UTF-8.

2. Открываете его в редакторе, способном обрабатывать большие файлы и менять кодировки. Например, EmEditor (на мой взгляд, лучший редактор для этих целей).

3. При открытии сразу указываете кодировку "Западноевропейская". Либо, если уже открыли, выбираете File -> Reload -> Западноевропейская.

4. После этого русские буквы в вашем дампе будут выглядеть, как указано выше.

5. Копируете весь дамп в буфер.

6. Создаете новый документ и вставляете содержимое буфера.

7. Меняете ВСЕ встречающиеся параметры SET NAMES и DEFAULT CHARSET с cp1251 (либо та кодировка, что вы использовали до этого) на utf8.

8. Сохраняете файл, выбрав в параметрах сохранения кодировку UTF-8.

 

Таким образом у меня получился полностью рабочий дамп, который IPB 2.3.6 слопала прекрасно. Сообщения добавляются, удаляются, все по-русски, никаких кракозябр.

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

 

P.S.: Решение нашел, поставив форум с нуля, выставив в нем UTF-8 в качестве основной кодировки и создав тестовую тему. Дальше чисто визуально по каракулям определил кодировку :-)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
iconv + sed наше всё.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
iconv + sed наше всё.

Суть к том, что прямая конвертация почему-то не помогает. То есть если я возьму свой дамп и сохраню в западноевропейской кодировке, то получу вопросики. У меня получилось сохранить нужные кракозябры ТОЛЬКО копированием через буфер. Iconv вообще отказался конвертить, ну а sed'ом лично мне не удобно пользоваться. К тому же, насколько я помню, он предназначен для пакетной замены выражений в файлах, а не для редактирования.

 

Одним словом, у меня эта связка не сработала.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хочу еще добавить один момент к сказанному выше.

 

Дело в том, что описанный мной способ - фактически "обманка". Получается, что дамп кодируется дважды.

Проблемы могут быть разные - от потерянных символов до некорректно отображаемого форума (могут пропасть все темы, например).

К сожалению, другого варианта я пока не нашел, и пришлось обратиться в службу поддержки.

 

И да, проблема с кодировками ВООБЩЕ не зависит от того, используете ли вы пиратскую или лицензионную версию форума.

Я купил лицензию, потому что мне очень нравится этот движок. До этого пользовался нуленой версией, и были точно такие же проблемы у меня.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

сечешь тему

Вообще, про кодировки хорошо бы расписать подробно, с картинками - но как всегда, скорее всего времени не найдется

Только учти, что с UTF-8 не работают стандартные строковые функции, нужно пользоваться их mb_ эквивалентами, или перегрузить их в php.ini

Ссылка на комментарий
Поделиться на других сайтах

  • 0

У меня в phpMyAdmin в форме, где на исполнение загружается .sql файл есть select "кодировка файла". Видимо там нужно выбрать UTF.

Хотя я что-то запутался.

В столбцах у вас latin, в таблице cp1251, в инсертах UTF.

____________________________

Узнайте, какие места непригодны для строительства. Берегите свое время и деньги

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Проблема таже. Переезд на другой хост. Кодировка ??????????????.

 

Пробовал все указанные вами способы - безрезультатно.

 

сделал вот так

 

в файле /isp_kernel/class_db_mysql.php

 

наачало кода со строки 118 для ориентира

добавил строчки

@mysql_query('set names cp1251');

 

вот что получилось и все работает.

 

		if ( IPS_MAIN_DB_CLASS_LEGACY )
       	{
			$this->connection_id = mysql_connect( $this->obj['sql_host'] ,
												  $this->obj['sql_user'] ,
												  $this->obj['sql_pass']

									);
@mysql_query('set names cp1251');
		}
		else
		{
			$this->connection_id = mysql_connect( $this->obj['sql_host'] ,
												  $this->obj['sql_user'] ,
												  $this->obj['sql_pass'] ,
												  $this->obj['force_new_connection']

									);
@mysql_query('set names cp1251');
		}
	}

	if ( ! $this->connection_id )

Изменено пользователем sws
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.