Проблема с перекодировщиком iconv windows-1251-->KOI8-R

Тема в разделе "PHP", создана пользователем farm, 4 май 2009.

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

    farm

    Регистр.:
    8 июн 2006
    Сообщения:
    536
    Симпатии:
    105
    Имеется директория с папками в которых html файлы. Нужно сменить кодировку с windows-1251 на KOI8-R. Нашел скрипт под это дело, все работает но некоторые(не все) файлы он бьет, т.е сохраняет половину файла. Ниже исходник
    PHP:
    <?php
       ini_set
    ('display_errors'TRUE);
     @
    ini_set('memory_limit''64M');
     @
    set_time_limit(0);
     @
    ini_set('max_execution_time',0);
     @
    ini_set('set_time_limit',0);
    function 
    convert($directory){ 
     
        if(
    is_dir($directory)){ 
            
    $direc opendir($directory); 
            while(
    false !== ($file readdir($direc))){ 
     
                if(
    $file !="." && $file != ".."){ 
     
                    if(
    is_file($directory."/".$file)){ 
     
                        
    $filename explode(".",$file); 
     
                        if (
    $filename[1] === "html" || $filename[1] === "php" || $filename[1] === "txt") { 
     
                            
    $text file_get_contents($directory."/".$file); 
                            
    $text iconv("windows-1251""KOI8-R"$text); 
                            
    file_put_contents($directory."/".$file$text);                 
     
                            echo 
    $file " ....... ok<br>"
     
                        } 
     
     
                    } else if(
    is_dir($directory."/".$file)){ 
     
                        
    convert($directory."/".$file); 
     
                    } 
     
                } 
            } 
            
    closedir($direc); 
        } 
     
        return ; 

     
    convert("convert"); 
    ?>
    В чем может быть проблема? Юзаю на денвере
     
  2. [Гилыч]

    [Гилыч] Постоялец

    Регистр.:
    5 авг 2008
    Сообщения:
    57
    Симпатии:
    17
    попробуй вместо
    PHP:
    file_put_contents($directory."/".$file$text); 
    использовать
    PHP:
    $handler fopen($directory."/".$file"w+");
    fwrite($handler$text);
    fclose($handler);
     
  3. farm

    farm

    Регистр.:
    8 июн 2006
    Сообщения:
    536
    Симпатии:
    105
    Попробывал, не помогло. Так же все осталось.
     
  4. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    PHP:
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    [telepat mode]
    В отсутствии символа из одной кодировки в другой. Лекарства искать в мануале по iconv.
    [/telepat mode]
     
    farm нравится это.
  5. farm

    farm

    Регистр.:
    8 июн 2006
    Сообщения:
    536
    Симпатии:
    105
    Включил отображение ошибок, вот что вывалилось
    Покурил гугл с яндексом, но как поправить это так и не нашел.
     
  6. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    farm нравится это.
  7. studentpm

    studentpm

    Регистр.:
    8 ноя 2006
    Сообщения:
    184
    Симпатии:
    132
    $text = iconv("CP1251", "KOI8-R", $text);
    Нет такой кодировки windows-1251
     
  8. SiMM

    SiMM Создатель

    Регистр.:
    8 фев 2009
    Сообщения:
    41
    Симпатии:
    6
    studentpm, под виндой (выше было сказано про денвер) - есть :) Опять же текст сообщения об ошибке был бы другим - Wrong charset, да и файлы бы наполовину не сохранялись.
     
  9. farm

    farm

    Регистр.:
    8 июн 2006
    Сообщения:
    536
    Симпатии:
    105
    Вообщем достаточно было вставить //IGNORE, и все стало нормально работать:)
    PHP:
    $text iconv("windows-1251""KOI8-R//IGNORE"$text); 
     
  10. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Есть, и не только в винде - iconv прекрасно понимает её и под никсами.

    Ошибка в том, что попадается файл в кодировке, отличной от указанной в вызове iconv.
    //IGNORE - не панацея.

    По теме - http://www.nulled.ws/showpost.php?p=944762&postcount=10
     
    farm нравится это.
Статус темы:
Закрыта.