Опять проблема с кодировкой

Статус
В этой теме нельзя размещать новые ответы.

alexo

Участник
Регистрация
28 Май 2006
Сообщения
315
Реакции
5
Привет

Знаю, что проблема старая, да и я сам кажется пару раз этот вопрос задавал и что самое странное, что всё было ОК.

Пока в очередной раз не сталкнулся с очередным сайтом с той же проблемой.

Сейчас коротко что к чему.

Сайт в юникоде кодировка -UTF8

Зная, как бороться с этой проблемой изначально поставил все настройки как надо.

1.System Preferences -General Configuration - UTF-8

2. CP Home › Admin › Weblog Administration › Weblog Management › Edit Weblog - XML Character Encoding - UTF-8


3, db/db.mysql.php
in Connect to database

Код:
    /** ---------------------------------------    
    /**  Connect to database
    /** ---------------------------------------*/
    
    function db_connect($select_db = TRUE)
    {    
        $this->conn_id = ($this->conntype == 0) ?
          @mysql_connect ($this->hostname, $this->username, $this->password):
          @mysql_pconnect($this->hostname, $this->username, $this->password);
        
        if ( ! $this->conn_id)
        {            
            return FALSE;        
        }
        
        if ($select_db == TRUE)
        {
            if ( ! $this->select_db())
            {
                return FALSE;    
            }
        }
        
$this->query("SET NAMES 'utf8'");
$this->query("SET CHARACTER SET utf8");
$this->query("SET COLLATION_CONNECTION=utf8_general_ci");
        
        return TRUE;
    }
    /* END */
4. текст строго в юникоде вводиться

---------------
в админке всё ок, но в базе (и в пхпадмин) и если смотрю файл сурс - идет текск такого рода

& laquo; & laquo; & # 1358;& # 1377; & # 1404; &# 1387;ր только слитно
------------
пролистал мейн форум - сделал всё когда то, кто то кому советовали (имею ввиду дельные советы :nezn:)
1. база строга -в Collation - utf8_general_ci
2. переконвертировал всю базу через этот скрипт

Код:
<?php
// Fill in your configuration below
$db_server      = 'localhost';
$db_user      = '**';
$db_password   = '**';
$db_name      = '***';

// Do not change anything below this
// set_time_limit(0);
header('Content-type: text/plain');

$connection = mysql_connect($db_server, $db_user, $db_password) or die( mysql_error() );
$db = mysql_select_db($db_name) or die( mysql_error() );

$sql = 'SHOW TABLES';
if ( !($result = mysql_query($sql)) )
{
   print '<span style="color: red;">SQL Error: <br>' . mysql_error() . "</span>\n";
}

// Loop through all tables in this database
while ( $row = mysql_fetch_row($result) )
{
   $table = mysql_real_escape_string($row[0]);
   $sql2 = "ALTER TABLE $table DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
   
   if ( !($result2 = mysql_query($sql2)) )
   {
      print '<span style="color: red;">SQL Error: <br>' . mysql_error() . "</span>\n";
      
      break;
   }
   
   print "$table changed to UTF-8 successfully.<br>\n";

   // Now loop through all the fields within this table
   $sql3 = "SHOW COLUMNS FROM $table";
   if ( !($result3 = mysql_query($sql3)) )
   {
      print '<span style="color: red;">SQL Error: <br>' . mysql_error() . "</span>\n";
      
      break;
   }

   while ( $row3 = mysql_fetch_row($result3) )
   {
      $field_name = $row3[0];
      $field_type = $row3[1];
      
      // Change text based fields
      $skipped_field_types = array('char', 'text', 'blob', 'enum', 'set');
      
      foreach ( $skipped_field_types as $type )
      {
         if ( strpos($field_type, $type) !== false )
         {
            $sql4 = "ALTER TABLE $table CHANGE `$field_name` `$field_name` $field_type CHARACTER SET utf8 COLLATE utf8_bin";
            if ( !($result4 = mysql_query($sql4)) )
            {
               print '<span style="color: red;">SQL Error: <br>' . mysql_error() . "</span>\n";
               
               break 3;
            }
            print "---- $field_name changed to UTF-8 successfully.<br>\n";
         }
      }
   }
   print "<hr>\n";
}

mysql_close($connection);
?>
не помогло, под конец весь текст из базы ручную перевёл в юникод прямо в пхпадмине.

на вид всё ок, но когда добавляю ню entry - текст опять такого рода

& laquo; & laquo; & # 1358;& # 1377; & # 1404; &# 1387;ր только слитно
подскажите, что я не правильно делаю, или что ещё я не сделал ?
 
Ну если не поймешь, то не стоит со своими комментами в умного играть.
Могу сказать, что в данном вопросе Для просмотра ссылки Войди или Зарегистрируйся :read: И Вы не решали проблему человеке - вы заводили его совершенно в другую сторону.
 
To:Для просмотра ссылки Войди или Зарегистрируйся
Ну вот, mxnr исправился и привел дельный комментарий, вместо умной цитаты.
Теперь решай проблему с уже имеющейся базой. (если она нужна)
Как именно, описано в приведенной выше мной ссылке
 
спасибо всем

плж не надо ссориться из меня (из за моего вопроса) :)

MXNR - на самом деле уже помог (я по глупости смотрел в сторону УТФ - вместо того, чтобы выдеть очевидное).

Иногда вместо того, чтобы увидеть то что перед глазами, мы стараемся делать "Как Всегда" :=) (это при том, что себя не считаю нубом в ЕЕ - как никак 5-7 лет работы с их продуктами)

Просто уже много раз эту проблема решал (УТФ) до этого, поэтому на этот раз подумал в ту же сторону.

Прошу прошения, если сам по глупости и разговор отвёл не туда, но в любом случае это будет полезно для нубов (ну и для меня тоже)

Не расстраивайся, решим твою проблему. Глобальное решение изменения кодировки в EE возможно. Почитай вот Для просмотра ссылки Войди или Зарегистрируйся
как раз из за этого я расстраивался, что делал всё что было написанно про это (в том числе и эту статью читал) и скрипт не хотел войти в мое положение.

Теперь решай проблему с уже имеющейся базой. (если она нужна)
пришлось руками править в самом уже sql-e

Ещё раз огромное спасибо всем
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху