За последние 24 часа нас посетили 22880 программистов и 1232 робота. Сейчас ищут 780 программистов ...

Путается кодировка при показе страниц

Тема в разделе "MySQL", создана пользователем Elena, 17 апр 2006.

  1. Elena

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

    С нами с:
    17 апр 2006
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте. Помогите, пожалуйста, советом.

    Мне досталось следующее наследство: БД MySQL создана в кодировке KOI-8. Функционально БД разбита на две части, они между собой никак не связаны, не обмениваются данными и т.п.
    По-хорошему, это должны были быть две разные БД, но вторую на этом хостинге создать нельзя.

    В одной половине таблиц данные так и лежат в KOI-8, с ними все нормально.
    Данные во второй части занесены в кодировке Win-1251. Страницы, которые создаются на php, тоже в кодировке win-1251, там стоит и соответсвующий META-тег.
    Так вот, при выводе страниц, не всегда, но довольно часто возникает путаница в кодировках и все те тексты, что берутся из БД, выводятся в кодировке KOI-8! Иногда бывает достаточно один раз обновить страницу и все нормализуется. Иногда прихожится нажимать Refresh несколько раз....

    У меня такое ощущение, что это происходит, когда коннект плохой. Как-будто что-то не дотягивается...
    Если связь хорошая, то этот эффект и вообще может не возникать. Но, к сожалению, часто бывает, что коннект не очень хороший
    :(

    Уже пробовала перед каждым запросом делать
    set character set cp1251
    скорее от безысходности. Это никак не влияет на ситуацию.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Elena
    1. сделай дамп базы и приведи все к одной кодировке. есть такая возможность? я бы поднапрягся и привел все в нудный вид
    2. выдавай header ('content-type: text/html; charset=кодировка'); перед выдачей страницы

    если проблемы - пришли дамп мне на мыло. я причешу ...
     
  3. Elena

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

    С нами с:
    17 апр 2006
    Сообщения:
    5
    Симпатии:
    0
    Это делается. Страницы формируются с указанием нужной кодировки.

    Такая мысль и мне приходила в голову, но...
    Но это практически невозможно. Эти таблицы в общей сложности занимают 92М.

    Спасибо за предложение помощи, но хотелось бы обойтись без этого.
     
  4. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Если отдельные поля небольшие, то можно в цикле просто пройтись по ним и каждое перекодировать.
     
  5. Elena

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

    С нами с:
    17 апр 2006
    Сообщения:
    5
    Симпатии:
    0
    То есть другого способа, как перетащить базу в другую кодировку, нет?
     
  6. Kelkos

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

    С нами с:
    15 апр 2006
    Сообщения:
    37
    Симпатии:
    0
    вот прямо вот такого кажися и нет.. есть немного другой.. делаешь дамп и дамп переконвертируешь "одним махом - семерых побивахом" в нужную кодировку конвертером текста.. после чего чуть-чуть правишь его ручками (кодировку у таблиц по умолчанию) и заливаешь обратно..
    Не факт, что сущесвуют более человеческие методы.. но неразу не сталкивался с перекодировками и поэтому более практичных решений не вижу.
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Elena
    я бы просто сдампил и руками подправил. делов на 1-2 часа.
     
  8. Elena

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

    С нами с:
    17 апр 2006
    Сообщения:
    5
    Симпатии:
    0
    А вот вы все время говорите "...и руками подправил..."
    А что именно надо править и как?
     
  9. vasa_c

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

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    А попробуйте "set charset cp1251"
    или "set charset windows-1251"
    и не перед каждым, а 1 раз.
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    1. дамп в UTF-8.
    2. в CREATE заменпить кодировку на нужную в редакторе, который поддерживает UTF-8 (MSWord)
    3. залить дамп обратно.

    что не понятно-то?
     
  11. Elena

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

    С нами с:
    17 апр 2006
    Сообщения:
    5
    Симпатии:
    0
    Дамп в 92 Мегабайта перекодировать в ворде?
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Elena
    мы ищем оправдания или хотим решить проблему?

    1. ворд я провел для примера
    2. почему нет? ворд нормально съест эти 92М. даже не поперхнется. там же можно сделать автозамену.
     
  13. Kelkos

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

    С нами с:
    15 апр 2006
    Сообщения:
    37
    Симпатии:
    0
    тут ещё проблема может быть с выгрузкой/закачкой дампа.. попробуй прогу dumper .. ей такие дампы что семечки.. ну или из шела работай.
     
  14. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну что ты девушку пугаешь ... 8)