|
|
|
| Есть Icq-Bot недавно перевел его на новый хост... вот тут и началось=)
Запустил я его, из БД (уже как стандарт) идут вопросы вместо кирилицы ( и главное не всегда :) то нормально то нет:( Полдня промучаясь понял что продлема с кодировкой наступает после реконнекта с БД
<%
if ( !is_resource( $this->db_id ) || !mysql_ping( $this->db_id ) ) {
$this->Disconnect();
if ( !$this->Connect( $error ) ) {
return false;
}
}
|
В методе $this->Connect() стоит запрос
<%
mysql_query( "SET NAMES 'cp1251'", $this->db_id );
|
Но он работает только один раз:( почему так происходит? может кто сталкивался с моей проблемой?
ЗЫ Как можно проверить есть соединение с БД? | |
|
|
|
|
|
|
|
для: Poison
(07.08.2007 в 20:54)
| | - | |
|
|
|
|
|
|
|
для: Poison
(08.08.2007 в 22:19)
| | А что выдает запрос
SHOW VARIABLES LIKE 'CHARACTER_SET\_%'
| после перезапуска? | |
|
|
|
|
|
|
|
для: Trianon
(08.08.2007 в 22:29)
| | Да проблема на лицо=)
До:
-----
Array
(
[Variable_name] => character_set_client
[Value] => cp1251
)
Array
(
[Variable_name] => character_set_connection
[Value] => cp1251
)
Array
(
[Variable_name] => character_set_database
[Value] => latin1
)
Array
(
[Variable_name] => character_set_results
[Value] => cp1251
)
Array
(
[Variable_name] => character_set_server
[Value] => latin1
)
Array
(
[Variable_name] => character_set_system
[Value] => utf8
)
-----
|
После:
-----
Array
(
[Variable_name] => character_set_client
[Value] => latin1
)
Array
(
[Variable_name] => character_set_connection
[Value] => latin1
)
Array
(
[Variable_name] => character_set_database
[Value] => latin1
)
Array
(
[Variable_name] => character_set_results
[Value] => latin1
)
Array
(
[Variable_name] => character_set_server
[Value] => latin1
)
Array
(
[Variable_name] => character_set_system
[Value] => utf8
)
-----
|
Как теперь с этим бороться? если даже SET NAMES непомогает... | |
|
|
|
|
|
|
|
для: Poison
(08.08.2007 в 22:52)
| | А если не одним, а независимыми запросами поставить
SET CHARACTER SET CLIENT = 'utf8';
SET CHARACTER SET RESULTS = 'utf8';
SET CHARACTER SET DATABASE
СТОП!!!
А mysql_select_db() Вы повторно вызываете?! | |
|
|
|
|
|
|
|
для: Trianon
(08.08.2007 в 22:56)
| | А если не одним, а независимыми запросами поставить
SET CHARACTER SET CLIENT = 'utf8';
SET CHARACTER SET RESULTS = 'utf8';
SET CHARACTER SET DATABASE
Попробую.
А mysql_select_db() Вы повторно вызываете?!
Да конечно, при перепоключении вызываеться такой вот метод:
<%
public function Connect($error = true) {
if ( ! $this->db_id = @ mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword ) ) {
if ( $error ) {
$this->Error(mysql_error(), mysql_errno());
}
return false;
}
if ( ! mysql_select_db( $this->dbname, $this->db_id ) ) {
if ( $error ) {
$this->Error(mysql_error(), mysql_errno());
}
return false;
}
mysql_query( "SET NAMES 'cp1251'", $this->db_id );
return true;
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(08.08.2007 в 22:56)
| | Пробывал:
<?
mysql_query( "SET CHARACTER SET CLIENT = 'cp1251'", $this->db_id );
mysql_query( "SET CHARACTER SET RESULTS = 'cp1251'", $this->db_id );
mysql_query( "SET CHARACTER SET DATABASE", $this->db_id );
|
Даже при первом подключении latin1:( | |
|
|
|
|
|
|
|
для: Poison
(09.08.2007 в 08:55)
| |
mysql_query( "SET CHARACTER_SET_CLIENT = 'cp1251'", $this->db_id );
mysql_query( "SET CHARACTER_SET_RESULTS = 'cp1251'", $this->db_id );
mysql_query( "SET CHARACTER_SET_CONNECTION = 'cp1251'", $this->db_id );
mysql_query( "SET CHARACTER_SET_DATABASE = 'cp1251'", $this->db_id );
|
| |
|
|
|
|
|
|
|
для: Trianon
(09.08.2007 в 09:14)
| | При переподключении все равно меняеться на latin1:((((
Млин как-же надоела эта кодировка:((( | |
|
|
|
|
|
|
|
для: Poison
(09.08.2007 в 09:23)
| | Немогу понять почему так происходит, ведь идет полное переподключение, сначала же все нормально))) может как-то еще нужно сообщит mysql что процесс умер:) | |
|
|
|
|
|
|
|
для: Poison
(09.08.2007 в 09:27)
| | | |
|
|
|
|
|
|
|
для: Poison
(09.08.2007 в 09:27)
| | а если после переподключения заказать сперва latin1 и скразу после этого cp1251?
Если клиентская сторона кеширует эти запросы, то по идее может помочь... | |
|
|
|
|
|
|
|
для: Trianon
(10.08.2007 в 10:45)
| | Ну вот)) нашел решение!
До эттого я для проверки вместо mysql_ping() использовал mysql_query("SELECT NULL") попробывал вместо этого поставить mysql_query( "SET NAMES 'cp1251'", $this->db_id ) хм... и все заработало!;) | |
|
|
|