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

Статус
В этой теме нельзя размещать новые ответы.

mptz

Постоялец
Регистрация
21 Июн 2006
Сообщения
435
Реакции
180
Использую joomla+virtuemart и компонент для загрузки прайс-листа.
Проблема в том что вся система и импорт/экспорт прайс-листа работает в кодировке utf8, а редактор excel только в windows-1251.
Подскажите, можно ли php скриптом после загрузки csv-файла перекодировать из windows-1251 в utf-8?
Если да, то подскажите пример скрипта
 
Когда делаешь дамп (именно записываешь ячейки) можно перекодировать при помощи Для просмотра ссылки Войди или Зарегистрируйся
 
Код:
<?
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
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху