Перейти к контенту
  • 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

Зарузка...

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

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

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