fgetcsv, str_getcsv и проблемы с кириллицей
Как оказалось, данные функции (fgetcsv и str_getcsv) бывает глючат с кириллицей. Хотя вряд ли можно ругать конкретно эти ф-ции, скорее надо ругать хостеров, которые не позаботились о верной локали в настройках сервера Apache.
Данная проблема меня застала врасплох, когда необходимо было произвести импорт некоторых данных... Соответственно часть данных терялась, ровно как и моё драгоценное время. Именно поэтому хочу "отложить" в заметках данный конфиг.
И так, у нас 2 варианта.
1. Если есть SSH или имеются адекватные админы
Меняем локаль всего сервера:
Для Debian:
dpkg-reconfigure locales
Выбираем en_US.UTF-8 (мы же сервер конфигурим хотя можно и ru_RU.UTF-8 )
Для Debian (вариант 2): открываем файл /etc/default/locale и добавляем/заменяем:
LANG=en_US.UTF-8
Для CentOS: открываем файл /etc/sysconfig/i18n и добавляем/заменяем:
LANG="en_US.UTF-8"
Если и это не помогло, то делаем не большой хак:
Ищем файл envvars (где-то в папке Apache или httpd), у меня это: /etc/apache2 и меняем/добавляем там опцию (крайне осторожно! )
## The locale used by some modules like mod_dav
export LANG='en_US.UTF-8'
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale
2. Если руки связаны, а работать надо
Можно обойтись настройками в самом скрипте PHP.
setlocale(LC_ALL, 'en_US.utf8');
Надеюсь, данная статья Вам и мне (в будущем) очень помогла