Авто определение кодировки

Тема в разделе "PHP Pro", создана пользователем VictorVi, 17 апр 2009.

Статус темы:
Закрыта.
  1. VictorVi

    VictorVi Прохожие

    Кто как определяет кодировку страницы?
    Я обычно делал вот такое простое действие:

    PHP:
        /**
         * Определяем кодировку. Конвертим контент в соответствии с кодировкой.
         */
        
    if (preg_match("/charset=([^\"\'<\s]+)/",$strContent$strMatch)){
            
    $charset=trim($strMatch[1]);
        }
        
        if (
    strlen($charset)>0){
            
    $strContent=iconv($charset"cp1251"$strContent);
        }
    Но порой чудо разработчики сайтов ставят в чарсет утф-8, а сайт на самом деле на cp-1251. Отсюда вопрос - как сделать универсальный конвертер, что бы он сам определял что за кодировка в тексте файла. Никто с таким не сталкивался? Интересует автоопределялка для cp-1251 koi8r и utf-8.
     
  2. medvoodoo

    medvoodoo Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    89
    Симпатии:
    19
  3. VictorVi

    VictorVi Прохожие

    Того что мне надо нет по указанонй сссылке нет.
    Но все же нашел хорошее решение.
    http://popoff.donetsk.ua/text/work/libs/a/charset/
    определяет все часто встречающиеся кодировки и соответствено конвертит в cp1251
     
  4. medvoodoo

    medvoodoo Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    89
    Симпатии:
    19
    Вы код смотрели? Такое через Ж я не видел со времен php3, в общем время первого коментария говорит сам за себя: 22.06.06
    В общем то я имел в виду код:
    PHP:
    <?php
    function detect_encoding($string) { 
      static 
    $list = array('utf-8''windows-1251');
     
      foreach (
    $list as $item) {
        
    $sample iconv($item$item$string);
        if (
    md5($sample) == md5($string))
          return 
    $item;
      }
      return 
    null;
    }
    ?>
    доработанный он позволяет уложиться в строчек 30 вместо 330, с несомненным выигрышем по времени
     
  5. VictorVi

    VictorVi Прохожие

    Порой работающее решение бывает лучше, чем некрасивый код.
    Спасибо за красивое решение моей проблемы. Точно до такого бы не дошел =)
     
  6. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
  7. medvoodoo

    medvoodoo Постоялец

    Регистр.:
    28 мар 2007
    Сообщения:
    89
    Симпатии:
    19
    не катит, тема немного другая, в той теме нет решения текущей задачи

    VictorVi, В решениях времен до эры php5 можно брать только идеи но не их исполнение, очень много полезных операторов появилось с тех пор и 95% хостингов научились собирать нормально php.
     
Статус темы:
Закрыта.