|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Добрый день. Прошу уточнить почему может не работать функция fgetcsv . (На хостинге не работает!!! , на Win Apache дома все хорошо.) Простой пример кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Содержимое файла _blank_service.csv: dress;read;100 подшить;read;200 the cars;read;300 the cars;читает;300 брюки;мужские;100 подшить_пhодшить ;; Но код на странице отображает (нет кириллицы) это: Строка номер 0 (полей: 3): [0]: dress [1]: read [2]: 100 Строка номер 1 (полей: 3): [0]: [1]: read [2]: 200 Строка номер 2 (полей: 3): [0]: the cars [1]: read [2]: 300 Строка номер 3 (полей: 3): [0]: the cars [1]: [2]: 300 Строка номер 4 (полей: 3): [0]: [1]: [2]: 100 Строка номер 5 (полей: 3): [0]: _пhодшить низ изделия [1]: [2]: если убрать разделитель - fgetcsv($f,1000) то киррилицу читает. но конечно не бьет по разделяемым блокам (выводит строками). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2009, 20:46 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Попробуйте указать настройки локализации с помощью setLocale ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2009, 20:57 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Kachalov, спасибо, попробую , но в принципе то , в чем проблема? Версия PHP на хостинге, которая не поддерживает киррилицу при работе с CSV ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2009, 21:05 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Иногда помогает написать в тэге мета, как здесь на текущей странице написано (правой кнопкой "исходный код"), а сам файл (страничку) сохранить как ..., как нужно. И если всё будет как положено - всё будет работать. Хотя, может я и ошибаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2009, 21:07 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
PVBно в принципе то , в чем проблема? Версия PHP на хостинге, которая не поддерживает киррилицу при работе с CSV ? все проблемы от того, что вы даже на линку, вам под нос подсунутую, кликнуть не можете, хотя там очень понятно написано в чем проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2009, 21:14 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Anjey aka PM, Чего злой такой то? Зашел я сразу по ссылке ( вам под нос подсунутую) конечно и попробывал, но не в этом причина. Я вначале писал "если убрать разделитель - fgetcsv($f,1000) то киррилицу читает . но конечно не бьет по разделяемым блокам (выводит строками).", то есть все таки дело не в Код: plaintext
и в мета charset указан: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 08:13 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
PVB, в какой кодировке сделан файл _blank_service.csv можете сказать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 11:02 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Kachalov, 1251 ANSI кириллица ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 11:56 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
PVB1251 ANSI кириллица - ok - а какая локализация у PHP? что пишет такой код: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 12:23 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Kachalov, Сейчас нет доступа к хостингу, смогу через 4-5 часов проверить. Спасибо за внимание к моей проблеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 12:39 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
- если Вам важно решить проблему, а не разобраться с работой функции fgetcsv, Вы можете попробовать код с explode: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 13:12 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
- ups, только вместо fread нужно fgets :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 13:14 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Kachalov, Код: plaintext 1. 2.
на домашнем севачке возвращает: Проверка чтения CSV файла Locale=Russian_Russia.1251 А на хостинге: Проверка чтения CSV файла Locale=C Этим Код: plaintext
Но нужно именно разобраться с функцией. Почему она на хостинге не работает? И к тому же Locale=C возвращает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 19:25 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
PVB Но нужно именно разобраться с функцией. Почему она на хостинге не работает? И к тому же Locale=C возвращает. - а чего тут разбираться - стоит не та локаль которая нужна (как установить в локаль в коде уже было выше), если после попытки установить нужную локаль в коде ничего не происходит, т. е. локаль не устанавлиется, значит она не стоит на сервере (типично для забугорных хостингов). Если у Вас есть рутовый доступ к серверу - ставите нужную локаль на сервер (в Интернете есть инструкции как это делать), в противном случае пишите в суппорт хостеру просьбу добавить нужную локаль. Если ничего не вышло - меняете код или меняете хостинг :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 19:51 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
И еще : как дополнительно выяснилась проблема с не неотображением кирилицы в принципе. Она отображается , но только в случае, если до кириллицы стоят латинские символы , и при этом вся строка нормально отображается. hhhhhhh после латинских букв отображает А если кириллица стоит до латинских, то она съедается. тут пусто < before latin letter not display ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 20:59 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Не знаю актуальна ли задача для автора темы, но хочу внести свои 5 копеек. 1) Что-бы посмотреть список доступных локалей, достаточно в шеле выполнить locale -a. 2) Не обязательно ставить ru_RU.cp1251 локаль, единственное, кодировка файла должна соответствовать. На CentOS как правило из коробки куча локалей и достаточно установить локаль ru_RU, на Debian-е у меня только ru_RU.utf8, а на буржуйском сервере en_US.uft8. Для более менее универсального решения проблемы топик стартера достаточен вот такой код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2010, 01:24 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
NT Man, огромное спасибо! Ваши 5 коппеек сэкономили кучу времени)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2010, 10:29 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Маялся с той же проблемой. Пять копеек от NT Man здорово мне помогли. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2010, 21:28 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
PVBИ еще : как дополнительно выяснилась проблема с не неотображением кирилицы в принципе. Она отображается , но только в случае, если до кириллицы стоят латинские символы , и при этом вся строка нормально отображается. hhhhhhh после латинских букв отображает А если кириллица стоит до латинских, то она съедается. тут пусто < before latin letter not display а метод описаный 2на 2 поста выше решает проблему, которую описал PVB? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 16:12 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
и еще это Код: plaintext
Код: plaintext
И еще я не очень силен в этом всем, тока разбераюсь, но ведь если кирилица идет после латинских или запятой или цифры то вносится в бд нормально, а если первым символом идет кирилица то ячейка пустая. Вроде ж кодировку поняло как бы.. И еще если сначала кирилица а потом любой символ латиницы или буква или цифра то все будет после него отображатся и латиница и кирилица. Что за полторгейст то такой? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 18:00 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Введите в консоли: locale -a И вставьте сюда вывод. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 18:03 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
NT ManВведите в консоли: locale -a И вставьте сюда вывод. Сори я ж сказал, что тока начынаю изучать все, что за консоль? у меня эта проблема на сайте при импроте csv файла в бд, а консоль я так понимаю это с сервером что-то связано? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 18:20 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
SovaBarmakСори я ж сказал, что тока начынаю изучать все, что за консоль? у меня эта проблема на сайте при импроте csv файла в бд, а консоль я так понимаю это с сервером что-то связано? Ей богу не понимаю php програмистов на знающих *nix и консоль. Да речь о сервере работа php очень сильно зависит от настроек сервера, поэтому я прошу подключиться через putty к серверу и набрать в консоли locale -a, результат скопировать и напечатать тут. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 18:24 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
NT ManЕй богу не понимаю php програмистов на знающих *nix и консоль. Да речь о сервере работа php очень сильно зависит от настроек сервера, поэтому я прошу подключиться через putty к серверу и набрать в консоли locale -a, результат скопировать и напечатать тут. Я тока год в в этом всем ковыряюсь и опыта мало(, сайты кручу, раньше верстал тока, а совсем недавно начал понемногу разбиратся в php. я прочитал про тот putty там вроде как нужен SSH логин и пароль их у меня нет(, это сайт знакомого он завтра будет, хотя незнаю или все равно получится, я у себя на хостинге смотрел в мой тарифный план не входит SSH доступ ( может и у него так ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 18:44 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Тогда что выводят Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 18:54 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
NT Man, Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 19:03 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Тогда мой код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 19:06 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
В догонку исходная кодировка csv какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 19:07 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
windows 1251 как ексель сохраняет... может я как то не так делаю, я пытаюсь настроить компонент джумлы импорта таблиц и в файлах компонента я нашел что отвечает за преобразования кодировки Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
я так понимаю мне просто нужно написать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
но так не работает(, кирилица отображается нормально только, если перед ней идет хоть 1 латинский символ ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 19:28 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Спааааасибо, помогло))) я ведь не разобрался сначала, что к чему, я ж говорю тока начал учить php, а теперь все прочитал, вдумался в код и переделал свой и теперь работает))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2011, 20:05 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
SovaBarmak, Кирилические символы бери в кавычки и будет щастье! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2011, 14:26 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Та же проблема. Не выводятся строки если первый символ русская буква. Добавил iconv - стало выводить "NULL" :-( http://stretchfilm.byethost13.com/2006-2011.php Кто может сказать в чем ошибка? phpinfo(): http://stretchfilm.byethost13.com/phpinfo.php Accept-Charset windows-1251,utf-8;q=0.7,*;q=0.3 csv-файл в ANSI: http://stretchfilm.byethost13.com/1.csv Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 10:53 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Admin_Vlad, вы мое сообщение 10192716 читали вообще? Ваша ошибка что вы в UTF-8 переводите текст после разбора а надо до. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 10:59 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Да, читал несколько раз. Объясните пожалуйста "на пальцах" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:17 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Admin_Vlad, 1) У меня fopen открывает не файл а поток в памяти на запись. Код: php 1.
2) В этот созданный поток в памяти я сохраняю файл перекодированный в UTF-8 Код: php 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:23 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Слишком лаконично... Так? Код: php 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:29 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Admin_VladСлишком лаконично... Так? Код: php 1. 2. 3.
Я вижу бред, fopen возвращает файловый дескриптор для работы таких функций как fgetcsv , файловый дескриптор != string и его нельзя засовывать в iconv для конвертации. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:34 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Я понимаю, что бред. Не могли бы Вы запостить рабочий отрывок для чтения из .csv? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:38 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Admin_VladЯ понимаю, что бред. Не могли бы Вы запостить рабочий отрывок для чтения из .csv? 10192716 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:40 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Без php://memory этого не сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:52 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Проблему решил с помощью вот этой библиотечки: http://forum.dklab.ru/viewtopic.php?t=9549 Код: php 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:56 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Admin_VladБез php://memory этого не сделать? нет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2012, 11:56 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
NT Man, Большое-пребольшое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 14:00 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
На больших объемах данных php://memory лучше заменить на php://temp ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 14:23 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
большой обьем, это от скольки? или php://temp лучше в любом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2012, 07:35 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Если кому интересно. у меня fgetcsv тоже не воспринимал кириллицу. Воспринимал только если в строке(между ; ) стояли цифры или точка - то после этих символов кирилица писалАсь. что я сделал: на сервере выполнил: localedef -c -i ru_RU -f CP1251 ru_RU.CP1251 в файле php написал setlocale(LC_ALL, "ru_RU.CP1251"); все. после этого все замечательно стало читаться. Если у вас не свой сервер то ... не знаю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2012, 00:02 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
NT Man, Ну просто сразу помогло! Чудно! Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2014, 23:20 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Может кому пригодится. Написал свою функцию для обработки строки в массив csv Обращаться почти так же: ($str=fgetreadcsv($file))!==false Со своим разделителем и экранированием: ($str=fgetreadcsv($file,$разделитель;$экранирование))!==false По умолчанию ; и " Поддерживает перенос строк в экранированной ячейке: 1;2;"строка с переносом строк";3;кириллица В случае ошибки в синтаксисе строки вернёт пустую строку, в случае конца файла вернёт false. Файл должен быть utf-8. К сожалению кодировку нельзя менять построчно. function fgetreadcsv(&$file,$delimiter=';',$ecran='"'){ $mas=array(); $open=false; $cell=''; do{ $s=fgets($file); if($s!==false){ $col=strlen($s); $k=0; while($k<$col){ if($open){ if($s[$k]==$ecran){ if($k+1==$col){ $mas[]=$cell; $cell=''; $open=false; }else{ if($s[$k+1]==$ecran){ $cell.=$s[$k]; $k++; }else{ if($s[$k+1]==$delimiter){ $open=false; }else{ $mas=''; $k=$col; }; }; }; }else{ $cell.=$s[$k]; }; }else{ if($s[$k]==$delimiter){ $mas[]=$cell; $cell=''; if($k+1==$col){ $mas[]=$cell; }; }else{ if($s[$k]==$ecran){ if($cell!=''){ $mas=''; $k=$col; }else{ $open=true; }; }else{ $cell.=$s[$k]; if($k+1==$col){ $mas[]=$cell; $cell=''; }; }; }; }; $k++; }; }else{ $mas=false; }; }while($open); return $mas; }; ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:16 |
|
fgetcsv не отображает кириллицу
|
|||
---|---|---|---|
#18+
Lion28, Поправка. После $col=mb_strlen($s); Добавить while($col>0 && ($s[$col-1]=="\n" || $s[$col-1]=="\r")){$col-=1;}; А если сам файл php имеет кодировку window-1251 то после if($s!==false){ Добавить $s=iconv('utf-8', 'Windows-1251', $s); ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2018, 08:42 |
|
|
start [/forum/topic.php?all=1&fid=23&tid=1460219]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
others: | 334ms |
total: | 476ms |
0 / 0 |