Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: установка character set connection
 
 автор: celovec   (01.10.2009 в 19:14)   письмо автору
237.6 Кб
 
 

Здравствуйте! Чтобы, при соеденении с зазой русский текст не превращался в знаки вопроса нужно установить кодировку для соденения.
Вопрос такой если не делать это скриптом(в смарти форуме ничего не понятно, где там этот код соеденения..), то можно ли изменить эти натройки командой в пхпМайАдмин?
май.ини тоже не изменить.

Спасибо!

  Ответить  
 
 автор: cheops   (01.10.2009 в 19:20)   письмо автору
 
   для: celovec   (01.10.2009 в 19:14)
 

Проще просто поиском найти функцию mysql_connect() и воткнуть запрос сразу после неё.

  Ответить  
 
 автор: cheops   (01.10.2009 в 19:23)   письмо автору
 
   для: celovec   (01.10.2009 в 19:14)
 

phpMyAdmin не влияет на работу других скриптов - он сам PHP-скрипт. Изменить такое поведение можно только через my.ini, если прописать в ней директиву вида
[mysqld]
init_connect='SET NAMES cp1251;'

  Ответить  
 
 автор: celovec   (01.10.2009 в 19:31)   письмо автору
 
   для: cheops   (01.10.2009 в 19:23)
 

хорошо спасибо

а мне посоветовали в в окне запроса написать такую команду-

ALTER DATABASE `kvkzru_kavkazforum` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin

прокоментируйте пожалуйста.

  Ответить  
 
 автор: cheops   (01.10.2009 в 19:34)   письмо автору
 
   для: celovec   (01.10.2009 в 19:31)
 

Ничего не даст кроме того, что все новые таблицы у вас будут автоматически получать кодировку cp1251. Уже существующие таблицы и данные в них это не сдвинет ни на йоту. Самый лучший вариант - это выполнить SET NAMES.

  Ответить  
 
 автор: celovec   (01.10.2009 в 19:40)   письмо автору
 
   для: 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'");   :?

  Ответить  
 
 автор: cheops   (01.10.2009 в 19:42)   письмо автору
 
   для: celovec   (01.10.2009 в 19:40)
 

Лучше прямо перед последней строкой поместить установку нужной вам кодировки
@mysql_query("SET NAMES utf8");
return TRUE;

или
@mysql_query("SET NAMES cp1251");
return TRUE;

В зависимости от того, какая кодировка вам нужна.

  Ответить  
 
 автор: celovec   (01.10.2009 в 19:45)   письмо автору
 
   для: cheops   (01.10.2009 в 19:42)
 

Спасибо за внимание и совет! частично зарабртало, видимо, там таблицы в разных кодировках..

  Ответить  
 
 автор: Trianon   (01.10.2009 в 19:53)   письмо автору
 
   для: celovec   (01.10.2009 в 19:45)
 

Запрос ALTER DATABASE , который Вам посоветовали, тоже необходимо выполнить.
Но еще до создания таблиц.
А если таблицы создаются путем импорта, то перед импортом нужно убедиться, что в дампе не прописаны противоречивые указания относительно кодировки.

  Ответить  
 
 автор: celovec   (01.10.2009 в 20:01)   письмо автору
 
   для: Trianon   (01.10.2009 в 19:53)
 

ага, учтём, спасибо

Вот сейчас например все таблицы имеют правильную кодировку а работает пол сайта...заново импортировать?

  Ответить  
 
 автор: Trianon   (01.10.2009 в 20:05)   письмо автору
 
   для: celovec   (01.10.2009 в 20:01)
 

phpMyAdmin и/или другие клиенты показывают в них корректные данные?

  Ответить  
 
 автор: celovec   (01.10.2009 в 20:31)   письмо автору
 
   для: Trianon   (01.10.2009 в 20:05)
 

в некоторых таблицах абракодабра в phpmyadmin

  Ответить  
 
 автор: Trianon   (01.10.2009 в 21:00)   письмо автору
 
   для: celovec   (01.10.2009 в 20:31)
 

значит надо удалять таблицы , проверять дамп и импортировать заново.

  Ответить  
 
 автор: celovec   (01.10.2009 в 21:35)   письмо автору
 
   для: Trianon   (01.10.2009 в 21:00)
 

ясно, благодарю

  Ответить  
 
 автор: Trianon   (01.10.2009 в 20:07)   письмо автору
 
   для: celovec   (01.10.2009 в 20:01)
 

правильная кодировка таблицы - это когда кодировка в описании таблицы соответствует кодировке фактически размещенных в ней данных.

  Ответить  
 
 автор: cheops   (01.10.2009 в 19:44)   письмо автору
 
   для: celovec   (01.10.2009 в 19:40)
 

Собственно вы можете $this не использовать - скорее всего это и не сработает, так как метод помоему называется query() и относится к $this->db... Лучше просто использовать функцию mysql_query() - результат выполнения вам не нужен, а дескриптор соединения функция сама подхватит.

  Ответить  
 
 автор: celovec   (25.12.2009 в 20:19)   письмо автору
 
   для: 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 в 21:31)   письмо автору
 
   для: celovec   (25.12.2009 в 20:19)
 

тема закрыта

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования