Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировкой 
V
    Опции темы
Serious2008
Дата 11.2.2013, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Здравствуйте, у меня вот такая проблема. После взятия бэкапа базы, у меня получился файл с кривой кодировкой. В базе оно храниться как latin1, а мне из этого latin1 теперь нужно сделать utf8, вот как оно выглядет.

Код

INSERT INTO `modx_ms_modAddress` (`id`, `uid`, `receiver`, `phone`, `country`, `index`, `region`, `city`, `metro`, `street`, `building`, `room`, `comment`) VALUES
(1, 1, 'Александр Пашкевич', '5777785550', 'Франция', 0, 'Калужская область', 'Борисов', '', 'Мелиоративная 23-5', '', '', ''),
(2, 1, 'Пашкевич Александр', '+375336362083', '', 0, '', '', '', '', '', '', 'dsfsdfsdfsdfs'),
(3, 1, 'Пашкевич Александр', '35434523423', '', 0, '', '', '', '', '', '', ''),
(4, 2, 'fdhfjhgjgjjhbg', '+7 (915) 111-11-11', '', 0, '', '', '', '', '', '', 'hgfjkjfgb');


Вот дамб базы данных

Если кому-нибудь вдруг случайно понадобиться, то вот решение этой проблемы, хоть и с mysql тегами, но работает.

Код

 $dbname = 'base_name';
        if (!mysql_connect('host_name', 'db_user_name', 'password_db_user')) {
        print 'Could not connect to mysql';
        exit;
    }

    $result = mysql_list_tables($dbname);
    
    if (!$result) {
        print "DB Error, could not list tables\n";
        print 'MySQL Error: ' . mysql_error();
        exit;
    }
   
    while ($row = mysql_fetch_row($result)) {
                $sql_s = "ALTER TABLE ".$row[0]." CONVERT TO CHARACTER SET utf8";
                mysql_query($sql_s);
         $sql = "SELECT * FROM ".$row[0];
                 mysql_query('SET NAMES latin1');
                 $res = mysql_query($sql);
                 while($rows = mysql_fetch_assoc($res))
                 {
                 $array_table[$row[0]][] = $rows;
                
                 $zapros = '';
                         foreach($rows as $key=>$value)
                         {
                                 $zapros .= ' , `'.$key.'` = "'.mysql_real_escape_string($value).'" ';
                         }
                         $zapros = substr($zapros, 2);
                          $sql_a = "UPDATE ".$row[0]." SET  ".$zapros." WHERE id = ".$rows['id'];
                        mysql_query('SET NAMES utf8');
                        mysql_query($sql_a);
                 }
    }


Это сообщение отредактировал(а) Serious2008 - 12.2.2013, 00:29

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  serio170_videots__1_.zip 271,56 Kb
PM MAIL   Вверх
Arantir
Дата 11.2.2013, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Дамп сейчас сохранен в кодировке UTF8, что можно узнать через любой более-менее продвинутый редактор, например, Notepad++. И через такой же можно пересохранить в любой другой кодировке.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Serious2008
Дата 11.2.2013, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Arantir, 

да вы что? Тут проблема в том, что и в дампе и в базе крякозяблы одинаковые, т.к. он пишет ютф 8 в базу.
PM MAIL   Вверх
Arantir
Дата 12.2.2013, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Нету там никаких кракозябов, файл абсолютно ровно сохранен в UFT8, даже русские комментарии есть при открытии его как UFT8.
Может в этом и проблема? Что вы нормальные символы пытались во что-то превратить и кракозябы получали, а не наоборот.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Serious2008
Дата 12.2.2013, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Цитата(Arantir @ 12.2.2013,  06:51)
Нету там никаких кракозябов, файл абсолютно ровно сохранен в UFT8, даже русские комментарии есть при открытии его как UFT8.
Может в этом и проблема? Что вы нормальные символы пытались во что-то превратить и кракозябы получали, а не наоборот.

modx_ms_modAddress 
вот эту таблицу найдите и гляньте какие там крякозяблы, и у меня они так же в базе были сохранены
PM MAIL   Вверх
Fortop
Дата 13.2.2013, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: нет
Всего: 42



Цитата(Serious2008 @  11.2.2013,  16:54 Найти цитируемый пост)
 В базе оно храниться как latin1, а мне из этого latin1 теперь нужно сделать utf8

Вот как latin1 и читайте из БД

А пишите как utf8

т.е. простейший скрипт на два коннекта. Один с set names "latin1", второй с set names "utf8"


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.