За последние 24 часа нас посетил 26641 программист и 1511 роботов. Сейчас ищут 940 программистов ...

Проблемы с кодировкой при загрузке страниц

Тема в разделе "PHP для новичков", создана пользователем Priler, 5 мар 2013.

  1. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Здравствуйте.
    У меня проблемы с кодировкой при парса html кода с интернета.
    Мой скрипт в кодировке utf-8 и в случае если сайт который я парсю в кодировке windows-1251 или др., то у меня 'ИХ' текст отображается как иероглифы.
    Как решить эту проблему?
    Помогите пожалуйста.
    Заранее спасибо.
    Вот код того, как я качаю страницу.
    Код (Text):
    1. $sock = @fopen ($site, 'r');//Загружаем страничку
    2.  
    3. //Если загрузка не удалась, то выводим сообщение об ошибке
    4. if (!$sock){
    5. exit("Попытка подключения к адресу $site не удалась...");
    6. }
    7. //Если загрузка удалась, радуемся и начинаем анализировать DOM дерево полученной странички
    8. else{
    9. $html = '';//Переменная исходного кода страницы
    10. //Цикл, который построчно заносит исходный код загруженной странички в переменную $html
    11. while (!feof($sock)){
    12. $html .= fgets($sock);
    13. }
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    у самого есть идеи?
     
  3. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    artoodetoo, неа, какие только я кодировки ставил все равно фигня. Надо что бы скрипт нормально поддерживал любые кодировки
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    iconv, mb_convert
     
  5. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    YSandro делаю так iconv($charset['2'], "UTF-8", $html); он все равно иероглифы потом выводит
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    что за $charset['2'] ? видимо в нём нет исходной кодировки
     
  7. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    artoodetoo, это строка в которой находится надпись windows-1251
     
  8. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Давай адрес сайта, с которого кракозябры.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Мож файл не конвертнули в UTF-8 (без BOM) и <meta charset="utf-8"> не написали?
    Ну и заголовки тоже желательно header и .htaccess. Вообщем все желательно весь сервак переведите по умолчанию в utf-8 =)
     
  10. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Всем спасибо все заработало, оказывается я кое что не так делал) Особая благодарность YSandro за своевременную помощь.
     
  11. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Да какая там помощь, написал
    Разве что на будущее задумал кое о чем напомнить, и эти мысли дошли телепатически :) Тогда они могли дойти хоть от кого :)