Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: fgetcsv и русские символы
 
 автор: darkozoid   (06.02.2015 в 11:13)   письмо автору
 
 


$f = file(file.csv, 'r');
  while($row = fgetcsv($f, 0, ';', '"')){
    print '<'.mb_detect_encoding($row[0]).'> ('.$row[0].')';
 }

Выводит <ASCII> ()

file.csv создаю через exel
если открываю через нотпад++ и меняю кодировку на UTF-8 то все нормально

<UTF-8> (Русский текст)

Как быть?

пробовал сделать подругому

$fr = fopen($file, "r");
$cont = fread($fr, filesize($file));
$f = explode("\n", $cont);
...


результат точно такой же...

Заказчик же не будет открывать каждый файл и менять кодировку... Им с трудом объяснили как сохранить csv

Помогите советом, или кодом, наверняка кто то сталкивался

p.s. PHP 5.2

  Ответить  
 
 автор: confirm   (06.02.2015 в 11:24)   письмо автору
 
   для: darkozoid   (06.02.2015 в 11:13)
 

Конвертируйте на сервере, если есть проблемы с кодировкой (хотя ее установить можно при сохранении документа), это же можно сделать. А вообще лучше в xml экспортировать таблицу.

  Ответить  
 
 автор: darkozoid   (06.02.2015 в 12:28)   письмо автору
 
   для: confirm   (06.02.2015 в 11:24)
 

>Конвертируйте на сервере, если есть проблемы с кодировкой...

Как? iconv() не дает ни какого результата

  Ответить  
 
 автор: confirm   (06.02.2015 в 12:49)   письмо автору
 
   для: darkozoid   (06.02.2015 в 12:28)
 

Вы сперва в настройки зайдите и установите параметры документов.

А лучше поступите так:

1) создайте xml-схему (.xsd файл) для структуры данных этой таблицы. Если не знаете как это делается, найдите в сети или онлайн генератор их, либо установите редактор схем, такие есть.
2) внедрите файл схемы в эту excel таблицу (как это делается рассказывает справка)
3) сопоставьте данные таблицы этой схеме (тоже самое все в справке)
4) сохраняйте таблицу для экспорта как xml-файл

В этом случае различных неурядиц, которые могут при экспорте в CSV возникать, в XML не будет.

  Ответить  
 
 автор: darkozoid   (06.02.2015 в 13:00)   письмо автору
 
   для: confirm   (06.02.2015 в 12:49)
 

да я бы вообще в нотпаде все делал, но заказчик, он же ленивая ОПА ж)
внедрять что то, куда то, как то... неееет

Ок спасибо, будут настраивать документы.

  Ответить  
 
 автор: confirm   (06.02.2015 в 13:07)   письмо автору
 
   для: darkozoid   (06.02.2015 в 13:00)
 

Что касается CSV, если мне память не изменяет, то его можно сохранить в трех форматах: DOS, MAC и WIN, и как понимаете это будут различные кодировки и mb_detect_encoding может и сглючить, соответственно и iconv не даст результата. И что теперь гадать как кто-то решит поступить? Достаточно указать условие, а обязанность изучать ПО, это обязанность тех кто на нем работает, благо справка у MS по офису на все вопросы выдает ответы.
Я не занимаюсь офисом, не могу сказать, но может в новых версиях внедрение совсем и не требуется.

Что касается формата сохранения, можно детектировать кодировку по иному принципу, пример которого есть в руководстве. Базируется он на конвертировании в кодировку туже самую, что и исходная с последующим сравнением хеш строк. Кодировка выбирается из списка:

<?
function detectEncoding($s) { 
    
$enc = array('utf-8''windows-1251');
    foreach(
$enc as $v) {
        
$chk iconv($v$v$s);
        if(
md5($chk) == md5($s)) return $v;
    }
    return 
null;
}


Добавьте в список и ASCII, проверяйте, пробуйте.

  Ответить  
 
 автор: darkozoid   (06.02.2015 в 13:58)   письмо автору
 
   для: confirm   (06.02.2015 в 13:07)
 

ok. Спасибо за помощь.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования