powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / fgetcsv не отображает кириллицу
25 сообщений из 49, страница 1 из 2
fgetcsv не отображает кириллицу
    #36022170
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Прошу уточнить почему может не работать функция fgetcsv .
(На хостинге не работает!!! , на Win Apache дома все хорошо.)

Простой пример кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
$f = fopen("_blank_service.csv", "rt") or die("Ошибка!");
for ($i= 0 ; $data=fgetcsv($f, [b]1000 ,";");[/b] $i++) 
{  $num = count($data);  
echo "<h3><FONT class=mid_2>Строка номер $i (полей: $num):</h3>";  
for ($c= 0 ; $c<$num; $c++)    
print "[$c]: $data[$c]<br>"; 
}
fclose($f);

Содержимое файла _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)
то киррилицу читает. но конечно не бьет по разделяемым блокам (выводит строками).
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36022191
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте указать настройки локализации с помощью setLocale
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36022205
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,

спасибо, попробую ,
но в принципе то , в чем проблема?

Версия PHP на хостинге, которая не поддерживает киррилицу при работе с CSV ?
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36022208
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда помогает написать в тэге мета, как здесь на текущей странице написано (правой кнопкой "исходный код"), а сам файл (страничку) сохранить как ..., как нужно. И если всё будет как положено - всё будет работать. Хотя, может я и ошибаюсь.
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36022219
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVBно в принципе то , в чем проблема?

Версия PHP на хостинге, которая не поддерживает киррилицу при работе с CSV ? все проблемы от того, что вы даже на линку, вам под нос подсунутую, кликнуть не можете, хотя там очень понятно написано в чем проблема.
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36022594
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anjey aka PM,

Чего злой такой то?

Зашел я сразу по ссылке ( вам под нос подсунутую) конечно и попробывал, но не в этом причина.

Я вначале писал "если убрать разделитель - fgetcsv($f,1000)
то киррилицу читает . но конечно не бьет по разделяемым блокам (выводит строками).", то есть все таки дело не в
Код: plaintext
setlocale(LC_ALL, 'ru_RU.cp1251');

и в мета charset указан:
Код: plaintext
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">	
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36022979
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVB,

в какой кодировке сделан файл _blank_service.csv можете сказать?
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36023165
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,

1251 ANSI кириллица
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36023261
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVB1251 ANSI кириллица
- ok
- а какая локализация у PHP? что пишет такой код:
Код: plaintext
<?php echo(setLocale(LC_ALL, NULL)); ?>
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36023318
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,

Сейчас нет доступа к хостингу, смогу через 4-5 часов проверить.
Спасибо за внимание к моей проблеме.
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36023423
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- если Вам важно решить проблему, а не разобраться с работой функции fgetcsv, Вы можете попробовать код с explode:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
$f = fopen("_blank_service.csv", "rt") or die("Ошибка!");
for ($i= 0 ; $row=fread($f, 1000 ); $i++) 
{  
  $data=explode(';', $row);
  ... 
}
fclose($f);
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36023429
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- ups, только вместо fread нужно fgets :)
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36024395
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kachalov,

Код: plaintext
1.
2.
print "Проверка чтения CSV файла<br>"; 
echo("Locale=".setLocale(LC_ALL, NULL));

на домашнем севачке возвращает:

Проверка чтения CSV файла
Locale=Russian_Russia.1251

А на хостинге:

Проверка чтения CSV файла
Locale=C


Этим
Код: plaintext
$data=explode(';', $row);
пользовался , спасибо.
Но нужно именно разобраться с функцией.
Почему она на хостинге не работает?
И к тому же Locale=C возвращает.
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36024413
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PVB
Но нужно именно разобраться с функцией.
Почему она на хостинге не работает?
И к тому же Locale=C возвращает.
- а чего тут разбираться - стоит не та локаль которая нужна (как установить в локаль в коде уже было выше), если после попытки установить нужную локаль в коде ничего не происходит, т. е. локаль не устанавлиется, значит она не стоит на сервере (типично для забугорных хостингов). Если у Вас есть рутовый доступ к серверу - ставите нужную локаль на сервер (в Интернете есть инструкции как это делать), в противном случае пишите в суппорт хостеру просьбу добавить нужную локаль. Если ничего не вышло - меняете код или меняете хостинг :)
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36024486
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще :

как дополнительно выяснилась проблема с не неотображением кирилицы в принципе.
Она отображается , но только в случае, если до кириллицы стоят латинские символы , и при этом вся строка нормально отображается.

hhhhhhh после латинских букв отображает

А если кириллица стоит до латинских, то она съедается.
тут пусто < before latin letter not display
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
fgetcsv не отображает кириллицу
    #36737161
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю актуальна ли задача для автора темы, но хочу внести свои 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.
<?php
	 header ('Content-type: text/html; charset=utf-8');
	 if (! setlocale (LC_ALL, 'ru_RU.utf8'))  setlocale (LC_ALL, 'en_US.utf8');
	 if ( setlocale (LC_ALL,  0 ) == 'C')  die ('Не поддерживается ни одна из перечисленных локалей (ru_RU.utf8, en_US.utf8)');

	$handle =  fopen ('php://memory', 'w+');
	 fwrite ($handle,  iconv ('CP1251', 'UTF-8',  file_get_contents ('test.csv')));
	 rewind ($handle);
	 while  (($row =  fgetcsv ($handle,  1000 , ';')) !==  false )  print_r ($row);
	 fclose ($handle);
?>
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36744604
tester2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NT Man, огромное спасибо! Ваши 5 коппеек сэкономили кучу времени))))
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #36919041
royx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маялся с той же проблемой. Пять копеек от NT Man здорово мне помогли.
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #37100545
SovaBarmak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PVBИ еще :

как дополнительно выяснилась проблема с не неотображением кирилицы в принципе.
Она отображается , но только в случае, если до кириллицы стоят латинские символы , и при этом вся строка нормально отображается.

hhhhhhh после латинских букв отображает

А если кириллица стоит до латинских, то она съедается.
тут пусто < before latin letter not display


а метод описаный 2на 2 поста выше решает проблему, которую описал PVB?
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #37100664
SovaBarmak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще это
Код: plaintext
<?php  echo ( setLocale (LC_ALL,  NULL )); ?>
выдает
Код: plaintext
Locale=C

И еще я не очень силен в этом всем, тока разбераюсь, но ведь если кирилица идет после латинских или запятой или цифры то вносится в бд нормально, а если первым символом идет кирилица то ячейка пустая. Вроде ж кодировку поняло как бы..

И еще если сначала кирилица а потом любой символ латиницы или буква или цифра то все будет после него отображатся и латиница и кирилица.

Что за полторгейст то такой?
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #37100669
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Введите в консоли:
locale -a
И вставьте сюда вывод.
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #37100696
SovaBarmak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NT ManВведите в консоли:
locale -a
И вставьте сюда вывод.

Сори я ж сказал, что тока начынаю изучать все, что за консоль?
у меня эта проблема на сайте при импроте csv файла в бд, а консоль я так понимаю это с сервером что-то связано?
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #37100703
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SovaBarmakСори я ж сказал, что тока начынаю изучать все, что за консоль?
у меня эта проблема на сайте при импроте csv файла в бд, а консоль я так понимаю это с сервером что-то связано?
Ей богу не понимаю php програмистов на знающих *nix и консоль.
Да речь о сервере работа php очень сильно зависит от настроек сервера, поэтому я прошу подключиться через putty к серверу и набрать в консоли locale -a, результат скопировать и напечатать тут.
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #37100740
SovaBarmak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NT ManЕй богу не понимаю php програмистов на знающих *nix и консоль.
Да речь о сервере работа php очень сильно зависит от настроек сервера, поэтому я прошу подключиться через putty к серверу и набрать в консоли locale -a, результат скопировать и напечатать тут.

Я тока год в в этом всем ковыряюсь и опыта мало(, сайты кручу, раньше верстал тока, а совсем недавно начал понемногу разбиратся в php.

я прочитал про тот putty там вроде как нужен SSH логин и пароль их у меня нет(, это сайт знакомого он завтра будет, хотя незнаю или все равно получится, я у себя на хостинге смотрел в мой тарифный план не входит SSH доступ ( может и у него так
...
Рейтинг: 0 / 0
fgetcsv не отображает кириллицу
    #37100756
NT Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда что выводят
Код: plaintext
1.
2.
3.
4.
5.
 echo ('test for ru_RU.utf8=');
 echo ( setlocale (LC_ALL, 'ru_RU.utf8'));
 echo ('<br>');
 echo ('test for en_US.utf8'=');
echo(setlocale(LC_ALL, 'en_US.utf8'));
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / fgetcsv не отображает кириллицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]