За последние 24 часа нас посетили 17999 программистов и 1634 робота. Сейчас ищут 1499 программистов ...

Проблема с кодировкой

Тема в разделе "MySQL", создана пользователем joost, 25 фев 2008.

  1. joost

    joost Guest

    После перехода на новый сервер начались проблемы с кодировкой.
    На старом хостинге стоить 5 мускул, на новом выделеной сервере 4 мускул. после переноса БД вместо руских букв - "кряки". Что делать?
    Кодировки на старом cp1251, на новом тоже. импортировал - тоже выбирал cp1251
     
  2. joost

    joost Guest

    Если делать заливку не через импорт, а через запрос, то все нормально. но база большая.
     
  3. Anonymous

    Anonymous Guest

    joost, в дамп впиши SET NAMES <нужная_кодировка> первой строчкой.
     
  4. joost

    joost Guest

    А если уже закачана база. Как исправить?
     
  5. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    выгрузить и загрузить в нужной. В принципе - на полчаса работы.
     
  6. joost

    joost Guest

    а что если конвертировать? как правильно это сделать?
     
  7. joost

    joost Guest

    в файле импорта прописал
    [sql]set session character_set_server=cp1251;
    set session character_set_database=cp1251;
    set session character_set_connection=cp1251;
    set session character_set_results=cp1251;
    set session character_set_client=cp1251;
    [/sql]
    и пробовал с
    [sql]
    SET NAMES 'cp1251';
    SET CHARACTER SET 'cp1251';
    SET SESSION collation_connection = 'cp1251_general_ci';[/sql]

    но всеравно заливает с кряками [sql]Assistant РђРњ-14512[/sql]

    заливаю через импорт с zip архива

    дамп-архив сделан из БД с кодировкой cp1251 [/php]
     
  8. Anonymous

    Anonymous Guest

    Эти "кряки" очень уж смахивают на UTF-8
     
  9. joost

    joost Guest

    и что можно сделать?
     
  10. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    ПЕРЕКОНВЕРТИРОВАТЬ
    Слить базу. Получившийся файл переконвертировать в cp1251 (если именно она нужна), дальше поправить в файле значение, что он теперь в cp1251 и залить обратно в базу, контролируя, что mysql-сервер будет принимать этот файл именно в cp1251.
    mysqldump
     
  11. joost

    joost Guest

    в таблице 27 000 записей.
    есть
    1. записи только английскими буквами
    2. записи только русскими
    3. записи русскими и английскими

    в записях, где есть русские буквы - "кряки"

    как выбрать из таблици только те записи, где есть кряки?
     
  12. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Хм. Тогда только ручками. Либо писать свой скрипт конвертации. 27тыс. записей - это не много.
    что-то типа:
    PHP:
    1. <?
    2. while ($x=mysql_fetch_array($res)) {
    3.   if (!preg_match("/[a-zA-Z\s,.\'\`/",trim($x['поле'])))
    4.     iconv("UTF-8","windows-1251",$x['поле']);
    5. }
    6. ?>
    но это не полный вариант регулярки. Над полным надо подумать.
     
  13. Anonymous

    Anonymous Guest

    я не знаю как у вас в винде, но у нас в никсах iconv прекрасно работает из командной строки с целым файлом.