За последние 24 часа нас посетили 19547 программистов и 1602 робота. Сейчас ищут 904 программиста ...

Помогите с кодировками

Тема в разделе "Прочие вопросы по PHP", создана пользователем melok, 4 мар 2009.

  1. melok

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

    С нами с:
    20 ноя 2008
    Сообщения:
    29
    Симпатии:
    0
    Прошу помощи у знающих.
    Суть проблемы:
    Нужно автоматически узнавать кодировку текста и в случае необходимости переводить в нужную.
    У меня все скрипты и база работают на кодировке utf-8, по поступила задача написать скрипт, где с партнерских сайтов собирать статистику , ну например ссылки, и отображать в общем файле отчета.
    Таким образом, на одной странице отчета попадают записи в разных кодировках, понятное дело нечитабельны.
    Задача привеси весь отчет в нужную кодировку utf-8.

    Для этой задачи можно использовать стандартные функции mb_detect_encoding() и iconv()
    Пробую так:

    ...
    for ($i=0; $i< count($matches[0]); $i++) {
    $text= $matches[0][$i];
    $kodirovka=mb_detect_encoding($text,"ASCII, JIS, UTF-8");
    echo $kodirovka."==".$text."<br>";

    }
    Пример реализации http://melok.com.ua/temp/14.php
    Но в результате, почему-то, текст ( в данном случае title к банеру) выводится в кодировке сp1251, хотя mb_detect_encoding() опознала его как UTF-8.
    Вопрос почему описания банера распознано как UTF-8, хотя на самом деле он в кодировке сp1251?
     
  2. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    смотри на заголовки и meta

    Код (Text):
    1.  
    2. Trying 77.234.201.222...
    3. Connected to 440hz.ru.
    4. Escape character is '^]'.
    5. GET / HTTP/1.0
    6. host: 440hz.ru
    7.  
    8. HTTP/1.1 301 Moved Permanently
    9. Server: nginx/0.5.33
    10. Date: Wed, 04 Mar 2009 11:27:22 GMT
    11. Content-Type: text/html; charset=iso-8859-1
    12. Connection: close
    13. Location: http://www.440hz.ru/
    14. Content-Length: 332
    15.  
    16. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    17. <html><head>
    18. <title>301 Moved Permanently</title>
    19. </head><body>
    20. <h1>Moved Permanently</h1>
    21. <p>The document has moved <a href="http://www.440hz.ru/">here</a>.</p>
    22. <hr>
    23. <address>Apache/2.0.61 (FreeBSD) PHP/5.2.5 with Suhosin-Patch Server at 440hz.ru Port 80</address>
    24. </body></html>
    25. Connection closed by foreign host.
    Content-Type: text/html; charset=iso-8859-1
     
  3. melok

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

    С нами с:
    20 ноя 2008
    Сообщения:
    29
    Симпатии:
    0
    Тоже вариант

    Но не всегда подходит, многие вовсе не указывают, сногие указывают кодировку через .htaccess, а многим вовсе все пофиг, даже доходит до нескольких кодировок на сайте.
     
  4. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    эт ты брось. хедеры всегда возвращают кодировку, если они этого не делают - то мудаки.

    хоть один примерчик?
    =)
     
  5. melok

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

    С нами с:
    20 ноя 2008
    Сообщения:
    29
    Симпатии:
    0
    Искал пару секунд
    http://obychnogo.net/raznye-interesnye-i-poleznye-saity
    внизу стоит Катерина, 24 (видать импортируют рекламу сайта знакомств)
     
  6. В футер этой страницы смотри.
     
  7. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а че там?