Массовый перевод файлов из ansi в utf8

Тема в разделе "Как сделать...", создана пользователем nord17, 27 янв 2012.

  1. nord17

    nord17

    Регистр.:
    24 июн 2008
    Сообщения:
    151
    Симпатии:
    2
    Update базы происходит раз в сутки, из файлов расположенных в одной папке... Столкнулся с проблемой - файлы ANSI кодировке, база в UTF-8. Файлы загружает другой скрипт. Решение вижу в конвертации их в UTF после распаковки в папку с помощью скрипта...
    Может кто уже сталкивался с подобным? помогите кодом...
    Заранее благодарен.
     
  2. lufton

    lufton Писатель

    Регистр.:
    6 окт 2011
    Сообщения:
    6
    Симпатии:
    1
  3. nord17

    nord17

    Регистр.:
    24 июн 2008
    Сообщения:
    151
    Симпатии:
    2
    Уважаемый lufton каким образом вы собираетесь ставить на W32 приложение на хостинг под управлением Линукса? Никак... Мне нужен PHP скрипт который будет конвертировать файлы...
     
  4. BACZ

    BACZ

    Регистр.:
    18 июн 2008
    Сообщения:
    608
    Симпатии:
    379
    Такую штуку с файлами сделать теоретически просто.
    Читаете диру (в массив). Через foreach каждый файл читаете в строку (file_get_contents допустим), конвертируете функцией перекодировки строк в utf и через fopen скидываете в старое имя файла. Практически всё упирается в функцию перекодировки строки. Вообще проще всего через iconv, но он наконвертирует ... Ещё по Интернету гуляет уйма функций перекодировки - ну разных там ansi 2 utf8, ansi 2 unicode и тд. Скажем так, ничего путного у меня по крайней мере не вышло - очень часто вместо некой части кириллицы какие то хромоногие символы получались.
     
  5. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    PHP:
    foreach(glob('files/*.txt') as $f) { $text=file_get_contents($f);
    if(
    mb_detect_encoding($text,'UTF-8,Windows-1251')=='Windows-1251')
    file_put_contents($f,iconv('Windows-1251','UTF-8//IGNORE',$text)); }
    с проверкой кодировки
     
    nord17 и Sunday нравится это.
  6. nord17

    nord17

    Регистр.:
    24 июн 2008
    Сообщения:
    151
    Симпатии:
    2
    pitkina спасибо большое, но уже решил немного по другому, конвертом на стадии погрузки в базу)))
    PHP:
            $ee file("nord123/$file");
            foreach (
    $ee as $row) {
                
    $row=trim($row);
        
    $row iconv("CP1251","utf-8",$row);
    //    $row = utf8_encode($row); - второй способ но как то он не правильно работает