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

Не верная кодировка


sys3x

Вопрос

Проблема такая - обновил форум 2.1.7 на 2.2.2 и проставил в админке кодировку windows-1251 - всё работало отлично пока не перенёс бд на сервер с MySQL 5

Т.е кодировка того что берётся НЕ из бд отображается нормально, а того что из бд - вопросительными знаками.....при этом в самой базе все кодировки нормальные стоят так что я думаю что это из-за форума скорее всего - что это может быть? подскажите плизз..

 

P.S На этой же базе работает ещё двиг DLE - при этом проблем с кодировками у него нет а его базы я тоже переносил с версии сервера MySQL 4 на 5

 

скрин _http://v.foto.radikal.ru/0703/23/ef266e34f9ec.jpg

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

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

  • 0

Незнаю поможет или нет, в файле конфиг глобал пропиши свою кодировку:

$INFO['mysql_codepage'] = 'твоя';

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

  • 0

хех не помогает((( пробовал по разному и кодировки выставлять и менять на

$INFO['sql_codepage'] = 'cp_1251_general_ci'; всё равно

 

одно и то же....

 

блин чё ещё можно сделать? не переносить же из-за такой фигни обратно на mysql 4 неужели никто не знает чё ещё мот быть...

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

  • 0

Ну вообще знаки вопроса означают что тут не достаточно прописать кодировку. Надо наверно перевести всё в базе на кодировку другую. Может это поможет, хотя я этого не пробывал:

http://www.zu1us.ru/2006/12/05/ipb-mysql-charset-conversion/

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

  • 0
в том то и прикол что в бд кодировка нормальная стоит - только скрипт её как то неправильно читает, т.е. в бд всё на русском и читается а скрипт данные из базы когда берёт получает не ту кодировку (((
Ссылка на комментарий
Поделиться на других сайтах

  • 0

нашёл похожие строчки в ips_kernel/class_db_mysqli_client.php

вот как они выглядят

//-----------------------------------------
 	// Connect
 	//-----------------------------------------

	$this->connection_id = @mysqli_connect( $this->obj['sql_host'] ,
											  $this->obj['sql_user'] ,
											  $this->obj['sql_pass']
											);

	if ( ! $this->connection_id )
	{
		$this->connect_failed = 1;
		$this->fatal_error();
		return FALSE;
	}

	if ( ! mysqli_select_db( $this->connection_id, $this->obj['sql_database'] ) )
	{
		$this->fatal_error();
		return FALSE;
	}
			mysqli_autocommit( $this->connection_id, TRUE );

	return TRUE;
}

function sql_can_subquery()
{
	$this->sql_get_version();

	if ( $this->mysql_version >= 41000 )
	{
		return TRUE;
	}
	else
	{
		return FALSE;
	}
}	

/*-------------------------------------------------------------------------*/
// Quick function: DO UPDATE
/*-------------------------------------------------------------------------*/

function do_update( $tbl, $arr, $where="", $shutdown=FALSE )
{
	//-----------------------------------------
	// Form query
	//-----------------------------------------

	$dba   = $this->compile_db_update_string( $arr );
	$query = "UPDATE ".$this->obj['sql_tbl_prefix']."$tbl SET $dba";

	if ( $where )
	{
		$query .= " WHERE ".$where;
	}

	//-----------------------------------------
	// Shut down query?
	//-----------------------------------------

	$this->no_prefix_convert = 1;

	if ( $shutdown )
	{
		if ( ! $this->obj['use_shutdown'] )
		{
			$this->is_shutdown = 1;
			$return = $this->query( $query );
			$this->no_prefix_convert = 0;
			$this->is_shutdown = 1;
			return $return;
		}
		else
		{
			$this->obj['shutdown_queries'][] = $query;
			$this->no_prefix_convert = 0;
			$this->cur_query = "";
		}
	}
	else
	{
		$return = $this->query( $query );
		$this->no_prefix_convert = 0;
		return $return;
	}
}

 

что здесь нужно поменять?

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

  • 0
Смотрю, смотрю в код и думаю, что что-то не сходится с моим. А потом вижу, что разница в русской и английской версиях — в русской версии этот косячок исправлен. :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

А почему собственно mysqli?

 

нашёл похожие строчки в ips_kernel/class_db_mysqli_client.php

Всё правильно, после них самых:

if ( ! mysqli_select_db( $this->connection_id, $this->obj['sql_database'] ) )
	{
		$this->fatal_error();
		return FALSE;
	}

 

только вот насчёт i вы проверьте, может всё-таки class_db_mysql.php?

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

  • 0

насколько я знаю в mysql 5 присутствует расширение mysqli которое снижает нагрузку на бд, и если MySQLi поддерживается то форум использует его т.е. файл который я написал выше...

ну всё равно пасиба за помошь попробую сделать как вы предложили....

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

  • 0

Хм, переносил форум с одного хостинга на другой и напаролся на проблемму с кодировкой...

Есть еще важный факт: на старом сервере был РНР 4.4.2 на новом 5.2.0..

Читал что бывают проблеммы в данной ситуации...

Форум английский русифицированный...

Подскажите пожалуйста как лечить?..

ПОиск юзал, но там в основном вопросы при обновлении, а у меня при переносе... очень прошу помочь..

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

  • 0

Проблемма явно с переносом БД... :D

т.к. все стандартные надписи (на русском) - отображаются нормльно, и я зашел в настройки и изменил название фрума с ??? ?????? на нормельное русское - и оно стало отображаться нормальным русским...

как починить посты, подскажите пожалуйста...

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

  • 0

Для: PinMix,

 

Попросите своего старого хостера сделать по возможности дамп БД в кодировке latin1 или cp1251. Затем создайте на новом хостинге БД в одной из этих кодировок, залейте дамп.

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

  • 0
Тогда в cp1251 пробуйте. Если и после этого ???? ??? ????, то переконвертируйте БД в другую кодировку, читаем тут, как это сделать: http://www.zu1us.ru/2006/12/05/ipb-mysql-charset-conversion/
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Для переноса бд с хостинга на хостинг пользуйтесь вот этой утилитой sypex.net .

define('RESTORE_CHARSET', 'cp1251'); исопльзуя такой параметр, сам пользуюсь, сколько переносил проблем не было. Если проблема с ???? а сайт на локалке, попробуйте просто правильно настроить mysql, faq.dklab.ru/denwer/#h30-33 .

Удачи ;)

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

  • 0
SomehaiN, возможно ли обойтись без шелла для выполнения скрипта, к сожалению мой хостинг не предоставляет shh-доступ..
Ссылка на комментарий
Поделиться на других сайтах

  • 0

К сожаленю свзяться с хостером старого хостинга я пока не могу...

Где то читал что это еще может быть связано с английской версией форума, а БД от версии 2.2.1 на версию 2.2.2 нельзя поставить?..

 

..нет ли еще решений?

тут пробмлема явно в базе данных..

но на стром хостинге все ведб работало...

 

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

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

  • 0

если при открытии любым php редактором кириллица отображается сносно, тоесть как надо, то просто поменяй:

latin1 на cp1251 и

latin1_general_ci на cp1251_general_ci

мне и такое помогало :)

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

  • 0

эм...

а если нет - то дамп кривой? оО

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

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

  • 0
эм...

а если нет - то дамп кривой? оО

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

А как на старом хостинге? Как сама ipb отображается? Я например когда столкнулся с такой проблемой, всё время сохранял дамп через phpmyadmin, ну и дамп соответсвенно был не мего красивый, самое верное в этом случае сохранить дамп базы через админку ipb, там всё красиво. Ну а дальше уже всё просто. Если она у тебя изначально в тексте сохранилась вопросиками, то это не есть хорошо, намучаешся...

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

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

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

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

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

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

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

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

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

Зарузка...
×
×
  • Создать...

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

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