|
|
|
|
$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 | |
|
|
|
|
|
|
|
для: darkozoid
(06.02.2015 в 11:13)
| | Конвертируйте на сервере, если есть проблемы с кодировкой (хотя ее установить можно при сохранении документа), это же можно сделать. А вообще лучше в xml экспортировать таблицу. | |
|
|
|
|
|
|
|
для: confirm
(06.02.2015 в 11:24)
| | >Конвертируйте на сервере, если есть проблемы с кодировкой...
Как? iconv() не дает ни какого результата | |
|
|
|
|
|
|
|
для: darkozoid
(06.02.2015 в 12:28)
| | Вы сперва в настройки зайдите и установите параметры документов.
А лучше поступите так:
1) создайте xml-схему (.xsd файл) для структуры данных этой таблицы. Если не знаете как это делается, найдите в сети или онлайн генератор их, либо установите редактор схем, такие есть.
2) внедрите файл схемы в эту excel таблицу (как это делается рассказывает справка)
3) сопоставьте данные таблицы этой схеме (тоже самое все в справке)
4) сохраняйте таблицу для экспорта как xml-файл
В этом случае различных неурядиц, которые могут при экспорте в CSV возникать, в XML не будет. | |
|
|
|
|
|
|
|
для: confirm
(06.02.2015 в 12:49)
| | да я бы вообще в нотпаде все делал, но заказчик, он же ленивая ОПА ж)
внедрять что то, куда то, как то... неееет
Ок спасибо, будут настраивать документы. | |
|
|
|
|
|
|
|
для: 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, проверяйте, пробуйте. | |
|
|
|
|
|
|
|
для: confirm
(06.02.2015 в 13:07)
| | ok. Спасибо за помощь. | |
|
|
|