За последние 24 часа нас посетили 22372 программиста и 1038 роботов. Сейчас ищут 499 программистов ...

Перекодирование таблиц вместе с полями

Тема в разделе "Решения, алгоритмы", создана пользователем [vs], 4 окт 2012.

  1. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Таблицы MySQL так устроены, что кодировка и сравнение могут быть установлены а) у базы данных 2) у таблиц 3) у полей, при чем все они могут быть разными и если кодировка поля установлена latin, то utf8 у таблицы игнорируется, что может причинить немало беспокойств.
    Чтобы подружить какую-нибудь систему с кириллицей бывает недостаточно изменить сравнение таблиц, если мудрые разработчики прописали сравнение для каждого поля.
    Тогда надо юзать функцию CONVERT.
    Код (PHP):
    1. <?php
    2. $db = mysql_connect('host','user','pass');
    3. if(!$db) echo "Невозможно подключится к базе данных с указанными данными!";
    4. mysql_select_db('dbase'); $result=mysql_query('show tables');
    5. while($tables = mysql_fetch_array($result)) {
    6. foreach ($tables as $key => $value) {
    7. mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET 'utf8' COLLATE utf8_general_ci");
    8. }}
    9. echo "Сравнение для всех таблиц Вашей БД было успешно изменено."; 
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    я правильно понимаю, что все таблица БД и все поля "переконвертируются" на utf8?
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Именно так, в свойствах каждого текстового поля будет стоять utf8_general_ci.

    Добавлено спустя 43 секунды:
    Содержимое полей кстати тоже сконвертируется в мультибайтовый эквивалент (или в однобайтовый, если наоборот).
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    малачина, спасибо!
     
  5. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Спасибос!
     
  6. pro100lance

    pro100lance Активный пользователь

    С нами с:
    14 апр 2012
    Сообщения:
    22
    Симпатии:
    0
    А сами записи поменяют кодировку?
    Дело в том, что я в ручную изменял кодировку на utf8_general_ci а записи как были похожи на иероглифы, так и остались.
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    обрати внимание на
    оно именно перекодирует, а не просто изменит атрибуты.