Edit report at https://bugs.php.net/bug.php?id=12127&edit=1
ID: 12127 Comment by: gtisza at gmail dot com Reported by: bitlz at mail dot ru Summary: Function fgetcsv() lost some letters Status: No Feedback Type: Bug Package: Filesystem function related Operating System: Windows 2000 Professional PHP Version: 4.3.1 Block user comment: N Private report: N New Comment: Duplicate of bug 45356? Previous Comments: ------------------------------------------------------------------------ [2008-05-11 10:37:48] pienkowskip at gmail dot com I found out that locale in shell interpreter is 'pl_PL.UTF-8', but my Apache is using 'C' locale. I added to script: setlocale(LC_ALL, 'pl_PL.UTF-8'); and I has no problems with fgetcsv(). I think it should be fixed, because csv standard doesn't mention about locales or encodings - csv is rather binary than textual. ------------------------------------------------------------------------ [2008-05-11 10:21:51] pienkowskip at gmail dot com it's very strange that when I run script by shell interpreter it's works properly, but when my Apache runs it there is a problem (mentioned above) ------------------------------------------------------------------------ [2008-05-01 15:26:29] steve at goooooogle dot com confirming on PHP 5.2.0-8 Csv file line:- 1,Alert Status,État de l'alerte fgetcsv ignores the É It only happens if É is right after the delimiter , Only way I got around this was to save the file as UTF8 as mention in the earlier comment. Didnt work even with setlocale(LC_ALL,'fr_FR.ISO-8859-1') ------------------------------------------------------------------------ [2007-06-01 12:58:59] laus at tinevej dot dk I got the same problem in php-5.2.2 with danish special letters (ÆØÅ) when it is saved in iso-8859-1. But if i save the csv files as utf-8 the problem disappears. ------------------------------------------------------------------------ [2006-11-24 09:32:47] info at netangels dot ru Guys The problem still occurs even in PHP 5.2.0 and PHP 5.1.x as well as in 5.0.x but we've found a workaround. If csv-file is in russian encoding (cp1251) then php-script should do: setlocale(LC_ALL, "ru_RU"); BEFORE call fgetcsv() if current locale is not ru_RU. If locale is ru_RU already, it works well on all versions of php from 4.3.x up to the latest 5.2.0 without requiring setlocale() ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=12127 -- Edit this bug report at https://bugs.php.net/bug.php?id=12127&edit=1