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

Тема в разделе "PHP", создана пользователем yeaahhh, 22 дек 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья. Помогите, пожалуйста, решить проблему.
    Есть сайт, на котором стоит кодировка windows-1251.
    Зарегистрировался русский, который живёт в Италии(Риме)..
    Все текстовые данные от него (даже input type="hidden") вносятся в БД в другой кодировке..
    Подскажите, пожалуйста, какие есть решения данной проблемы.. Заранее спасибо..
    P.S. iconv, походу, неуместна..
     
  2. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Возможно глюки у него на компе.
    А вообще переводи сайт на UTF...
     
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    a_n_d_y, а это проблематично?
    Подскажи, пожалуйста, алгоритм действий?
    И ещё: какие самые яркие проблемы я буду иметь с кодировкой windows-1251?
     
  4. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Да не сложно. Делаем дамп базы, создаем новую со сравнением utf8_general_ci, восстанавливаем дамп с помощью sypex damper принудительно перекодируя в utf. Далее перекодируем все файлы сайта в utf для этого есть куча утилит, гугли в сторону пакетной перекодировки. Ну и последнее меняем в метатегах windows-1251 на utf-8. Ну и в .htaccess прописываем AddDefaultCharset utf-8
     
    yeaahhh нравится это.
  5. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Благодарю.. А какие самые яркие проблемы я буду иметь с кодировкой windows-1251 в будущем?
     
  6. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    В принципе никаких. Но если начнешь с заморачиваться с ajax и json то наткнешься на грабли, когда данные на русском обрабатываются только в utf...
     
  7. hoshurik

    hoshurik Писатель

    Регистр.:
    11 ноя 2007
    Сообщения:
    4
    Симпатии:
    0
    Легче будет перекодировать БД в 1251
     
  8. Dima Kos

    Dima Kos Постоялец

    Регистр.:
    1 апр 2010
    Сообщения:
    54
    Симпатии:
    6
    и не только БД, весь сайт советую перевести на UTF-8. WIN-1251 будет работать только у тех, у кого стоит локализация, то есть грубо говоря в России в Русской винде есть локализация 1251, а в Германии уже нет. UTF-8 это универсальная кодировка, которая будет одинакого работать везде. И еще, ели у чела не стоит 1251 локализации в системе к примеру, то он вообще вместо нормальных букв будет видеть кракозябры.
     
  9. nullsab

    nullsab Постоялец

    Регистр.:
    5 июн 2007
    Сообщения:
    65
    Симпатии:
    10
    Кроме описанной конвертации файлов и данных для корректной работы нужно еще изменить некоторые функции:
    strlen → mb_strlen
    strtolower → mb_strtolower

    и тд.
     
  10. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    В таком случае, не плохо было бы упомянуть, что поддержка mb_* по умолчанию чаще всего выключена и её нужно включать отдельно. Т.е. либо просить хостера, либо ковырять конфиг. Если ни один из вариантов не помог, можно просто написать костыли вроде этого:
    PHP:
    if (!function_exists('mb_strlen'))
    {
    function 
    mb_strlen($str)
    {
    return 
    strlen(iconv("UTF-8","cp1251"$str));
    }
    }
     
Статус темы:
Закрыта.