Смена кодировки файла при загрузке

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

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

    mptz

    Регистр.:
    22 июн 2006
    Сообщения:
    436
    Симпатии:
    180
    Использую joomla+virtuemart и компонент для загрузки прайс-листа.
    Проблема в том что вся система и импорт/экспорт прайс-листа работает в кодировке utf8, а редактор excel только в windows-1251.
    Подскажите, можно ли php скриптом после загрузки csv-файла перекодировать из windows-1251 в utf-8?
    Если да, то подскажите пример скрипта
     
  2. omfg

    omfg

    Регистр.:
    4 авг 2009
    Сообщения:
    159
    Симпатии:
    46
  3. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    735
    Симпатии:
    423
    Код:
    <?
    function cp1251_to_utf8_recursive($data){
     if (is_array($data)){
      $d = array();
      foreach ($data as $k => &$v){
       $d[cp1251_to_utf8_recursive($k)] = cp1251_to_utf8_recursive($v);
      }
      return $d;
     }
    
     if (is_string($data)) return iconv(’cp1251′, ‘utf-8//IGNORE//TRANSLIT’, $data);
     if (is_scalar($data) or is_null($data)) return $data;
    return $data;
    }
    
    function is_utf8(&$data, $is_strict = true){
     if (is_array($data)){
      foreach ($data as $k => &$v) if (! is_utf8($v, $is_strict)) return false;
      return true;
     }
     elseif (is_string($data)){
      $result = $is_strict ?
      preg_replace(’/(?>
      [\x09\x0A\x0D\x20-\x7E] # ASCII
    | [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
    | \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
    | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
    | \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
    | \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
    | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
    | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
    )*
    /sx’, ”, $data) :
    
      preg_replace(’/.*/su’, ”, $data);
     }
     elseif (is_scalar($data) || is_null($data)) return true;
    return false;
    }
    
    $str = is_utf8($str) ? $str : cp1251_to_utf8_recursive($str );
    ?>
    
     
    mptz нравится это.
  4. Tier_WerWolf

    Tier_WerWolf Создатель

    Регистр.:
    9 июн 2009
    Сообщения:
    16
    Симпатии:
    2
Статус темы:
Закрыта.