fgetcsv, str_getcsv и проблемы с кириллицей

fgetcsv, str_getcsv и проблемы с кириллицей
просмотров: 441322 марта 2013 года

Как оказалось, данные функции (fgetcsv и str_getcsv) бывает глючат с кириллицей. Хотя вряд ли можно ругать конкретно эти ф-ции, скорее надо ругать хостеров, которые не позаботились о верной локали в настройках сервера Apache.

Данная проблема меня застала врасплох, когда необходимо было произвести импорт некоторых данных... Соответственно часть данных терялась, ровно как и моё драгоценное время. Именно поэтому хочу "отложить" в заметках данный конфиг.

И так, у нас 2 варианта.

1. Если есть SSH или имеются адекватные админы

Меняем локаль всего сервера:

Для Debian:

dpkg-reconfigure locales

   Выбираем en_US.UTF-8 (мы же сервер конфигурим smile хотя можно и 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 и меняем/добавляем там опцию (крайне осторожно! smile)

## 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');

 

Надеюсь, данная статья Вам и мне (в будущем) очень помогла wink

Что скажем?