За последние 24 часа нас посетили 62922 программиста и 1743 робота. Сейчас ищут 913 программистов ...

Кодировки сайта

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

  1. akeelow

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

    С нами с:
    10 апр 2012
    Сообщения:
    58
    Симпатии:
    0
    Все привет. Экспериментирую тут со скриптом отображения чужих ссылок на своем сайте:
    Код (PHP):
    1. $node = file_get_contents($link);
    2. $node = str_ireplace('src="/', 'src="http://'.parse_url($link, PHP_URL_HOST).'/', $node);
    3. $node = str_ireplace('href="/', 'href="http://'.parse_url($link, PHP_URL_HOST).'/', $node);
    4. echo $node; 
    Некоторые сайты работают нормально, например php.ru - http://akeelow.ru/cs/index.php?page=17 страница показывается вопросами вместо текста.

    Как-то можно автоматом перековертировать текст?
     
  2. akeelow

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

    С нами с:
    10 апр 2012
    Сообщения:
    58
    Симпатии:
    0
    Оказалось что если в браузере поменять кодировку на Windows-1251, то страница показывается правильно и текст читается. Почему же браузер не может сам определить как показывать страницу? Но это вопрос наверно для другого сайта.

    Добавлено спустя 31 минуту 47 секунд:
    В общем проблему вроде решил, прикрутил такой костыль, пока работает
    Код (PHP):
    1. if (stristr($node, "windows-1251")) header("Content-Type: text/html; charset=Windows-1251"); 
    Какие могут возникнуть проблемы с таким решением? :)
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Мж тебе это поможет
    php.net/manual/en/function.mb-convert-encoding.php
     
  4. akeelow

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

    С нами с:
    10 апр 2012
    Сообщения:
    58
    Симпатии:
    0
    Пробовал такую функцию:
    Код (PHP):
    1. <?php 
    2. function file_get_contents_utf8($fn) { 
    3.      $content = file_get_contents($fn); 
    4.       return mb_convert_encoding($content, 'UTF-8', 
    5.           mb_detect_encoding($content, 'Windows-1251, CP1251, UTF-8, ISO-8859-1', true)); 
    6. } 
    7. ?>
    Так и не смог заставить ее работать
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А потому что это не твой случай... ошибся...
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
  7. akeelow

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

    С нами с:
    10 апр 2012
    Сообщения:
    58
    Симпатии:
    0
    Что, простите? :)

    Добавлено спустя 43 минуты 16 секунд:
    А понял, это функция такая. Он так же не может работать с любым текстом. Придется сначала узнать кодировку, а потом перекодировать. Т.е. код она не упрощает. Но спасибо, буду знать что такое тоже бывает.
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    попробуйте сначала:
    1) прописать в .htaccess => AddDefaultCharset КОДИРОВКА_ваша
    2) получить содержимое
    и сохранить в файл..
    содержимое должно сохраняться в такой кодировке в какой указали
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Это метод который конвертирует в указываемую кодировку, с той которая указанна в принимаемом содержимом.
    Проверить кодировку автоматически можно только собрать все существующие кодировки, собрать в массив и проанализировать содержимое.