|
 237.6 Кб |
|
| Здравствуйте! Чтобы, при соеденении с зазой русский текст не превращался в знаки вопроса нужно установить кодировку для соденения.
Вопрос такой если не делать это скриптом(в смарти форуме ничего не понятно, где там этот код соеденения..), то можно ли изменить эти натройки командой в пхпМайАдмин?
май.ини тоже не изменить.
Спасибо! | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 19:14)
| | Проще просто поиском найти функцию mysql_connect() и воткнуть запрос сразу после неё. | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 19:14)
| | phpMyAdmin не влияет на работу других скриптов - он сам PHP-скрипт. Изменить такое поведение можно только через my.ini, если прописать в ней директиву вида
[mysqld]
init_connect='SET NAMES cp1251;'
|
| |
|
|
|
|
|
|
|
для: cheops
(01.10.2009 в 19:23)
| | хорошо спасибо
а мне посоветовали в в окне запроса написать такую команду-
ALTER DATABASE `kvkzru_kavkazforum` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin
прокоментируйте пожалуйста. | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 19:31)
| | Ничего не даст кроме того, что все новые таблицы у вас будут автоматически получать кодировку cp1251. Уже существующие таблицы и данные в них это не сдвинет ни на йоту. Самый лучший вариант - это выполнить SET NAMES. | |
|
|
|
|
|
|
|
для: cheops
(01.10.2009 в 19:34)
| | ясно, благодарю, теперь буду знать
нашёл вот такой кусок скрипта
// Connect
//-----------------------------------------
if ( $this->obj['persistent'] AND ! IPS_MAIN_DB_CLASS_LEGACY )
{
$this->connection_id = mysql_pconnect( $this->obj['sql_host'] ,
$this->obj['sql_user'] ,
$this->obj['sql_pass'] ,
$this->obj['force_new_connection']
);
}
else
{
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 character set 'cp1251'");
}
else
{
$this->connection_id = mysql_connect( $this->obj['sql_host'] ,
$this->obj['sql_user'] ,
$this->obj['sql_pass'] ,
$this->obj['force_new_connection']
);
}
}
if ( ! $this->connection_id )
{
$this->fatal_error();
return FALSE;
}
if ( ! mysql_select_db($this->obj['sql_database'], $this->connection_id) )
{
$this->fatal_error();
return FALSE;
}
return TRUE;
}
|
вроде то, что надо
только вот как внедрить сюда эти насроечные строки?
if ( IPS_MAIN_DB_CLASS_LEGACY )
{
$this->connection_id = mysql_connect( $this->obj['sql_host'] ,
$this->obj['sql_user'] ,
$this->obj['sql_pass']
);
$this->connection_id = mysql_connect( сюда?
$this->mysql_query("SET NAMES 'cp1251'"); :?
|
| |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 19:40)
| | Лучше прямо перед последней строкой поместить установку нужной вам кодировки
@mysql_query("SET NAMES utf8");
return TRUE;
|
или
@mysql_query("SET NAMES cp1251");
return TRUE;
|
В зависимости от того, какая кодировка вам нужна. | |
|
|
|
|
|
|
|
для: cheops
(01.10.2009 в 19:42)
| | Спасибо за внимание и совет! частично зарабртало, видимо, там таблицы в разных кодировках.. | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 19:45)
| | Запрос ALTER DATABASE , который Вам посоветовали, тоже необходимо выполнить.
Но еще до создания таблиц.
А если таблицы создаются путем импорта, то перед импортом нужно убедиться, что в дампе не прописаны противоречивые указания относительно кодировки. | |
|
|
|
|
|
|
|
для: Trianon
(01.10.2009 в 19:53)
| | ага, учтём, спасибо
Вот сейчас например все таблицы имеют правильную кодировку а работает пол сайта...заново импортировать? | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 20:01)
| | phpMyAdmin и/или другие клиенты показывают в них корректные данные? | |
|
|
|
|
|
|
|
для: Trianon
(01.10.2009 в 20:05)
| | в некоторых таблицах абракодабра в phpmyadmin | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 20:31)
| | значит надо удалять таблицы , проверять дамп и импортировать заново. | |
|
|
|
|
|
|
|
для: Trianon
(01.10.2009 в 21:00)
| | ясно, благодарю | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 20:01)
| | правильная кодировка таблицы - это когда кодировка в описании таблицы соответствует кодировке фактически размещенных в ней данных. | |
|
|
|
|
|
|
|
для: celovec
(01.10.2009 в 19:40)
| | Собственно вы можете $this не использовать - скорее всего это и не сработает, так как метод помоему называется query() и относится к $this->db... Лучше просто использовать функцию mysql_query() - результат выполнения вам не нужен, а дескриптор соединения функция сама подхватит. | |
|
|
|
|
|
|
|
для: cheops
(01.10.2009 в 19:44)
| | Здравствуйте!
такой скрипт
$connect= mysql_connect('localhost', 'useri', 'pass');
mysql_query ("SET NAMES cp1251");
mysql_select_db('base');
$result=mysql_query( "SELECT * FROM mybase");
|
сравнение таблиц - cp1251_general_ci
в phpMyAdmin всё корректно отображается
а мой скрипт не влияет на знаки вопроса. Почему?
Спасибо | |
|
|
|
|
|
|
|
для: celovec
(25.12.2009 в 20:19)
| | тема закрыта | |
|
|
|