Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

38K
05 мая 2009 года
Cluber
3 / / 29.06.2008
Имеется директория с папками в которых html файлы. Нужно сменить кодировку с windows-1251 на KOI8-R. Нашел скрипт под это дело, все работает но некоторые(не все) файлы он бьет, т.е сохраняет половину файла. Ниже исходник

Код:
<?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");
?>

Включил отображение ошибок, вот что вывалилось
 
Код:
Notice: iconv() [function.iconv]: Detected an illegal character in input string in Z:\home\site.ru\WWW\koi-8.php on line 23
14
05 мая 2009 года
Phodopus
3.3K / / 19.06.2008
Ну вот он и пишет что обнаружен символ который он не знает как перекодировать. Был флаг у iconv который позволял такие символы пропускать. Смотрите в справке или исходниках iconv
16K
05 мая 2009 года
k0t
97 / / 23.04.2007
 
Код:
$text = iconv("windows-1251", "KOI8-R//IGNORE", $text);

тот самый флаг
62K
31 августа 2010 года
cyklop77
3 / / 31.08.2010
у меня похожая проблема. прошу помощи..

вот строка, в которой я пытаюсь преобразовать фразу РОМ (написано кириллическими символами) из кодировки utf-8 в cp1251.

echo(iconv("UTF-8", "windows-1251//IGNORE", "РОМ")."___<br>");

на экран ничего не выводится, кроме ___

сам браузер настроен на кодировку utf-8 , если это важно.

подскажите пожалуйста в чем проблема?
253
31 августа 2010 года
Proger_XP
1.5K / / 07.08.2004
У тебя скрипт точно в UTF-8 сохранён? По умолчанию большинство редакторов используют ANSI, поэтому входная строка у тебя тоже в ANSI будет, а не в UTF-8.
62K
31 августа 2010 года
cyklop77
3 / / 31.08.2010
в ANSI.
но дело в том, что раньше я в этом скрипте использовал точно эту же функцию и работал с mysql. получалось так, что в mysql я отправлял фразы в cp1251(другие он просто не принимал, так каодировка базы cp1251).
сейчас же я решил переити с mysql на oracle. там кодировка базы тоже cp1251(записывается немного по другому конечно же). и тот же самый скрипт не работает... почему такое происходит?...

И кстати все равно не работает. на экран запрос выводится. с экрана копирую, выполняю в самом oracle - результирующий набор получаю. если делаю то же самое через пхп, то на экран выводятся все названия, а не тольео те, в которых присутствует фраза РОМ
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог