Перейти к контенту
  • 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, там всё красиво. Ну а дальше уже всё просто. Если она у тебя изначально в тексте сохранилась вопросиками, то это не есть хорошо, намучаешся...

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

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

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

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

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

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

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

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

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

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

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

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