LINUX.ORG.RU

xerces+centos 5.6+cron. Не читаются русские символы


0

1

Здравствуйте. На сервере centos 5.6 eсть программа dataParser на с++, которая парсит xml-файлы с помощью xerces. Она запускается в cron'е по определённому расписанию. Xml-файлы при этом генерируются в utf-8 на клиентской стороне (винда) с помощью того же xerces'a и передаются по ftp (через QFtp) на сервер. Некоторые значения атрибутов в этих файлах содержат строки с русскими символами.

Суть проблемы. Если я запускаю эту программу в консоли от рута, всё работает как часы, всё отлично. Если эта программа запускается через cron, то xerces при парсинге значений атрибутов с русскими символами выдаёт ошибку: invalid multi-byte sequence. Как такое может быть?

Настройки cron'a и локали:

[root@localhost /]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
* */1 * * * root dataParser

[root@localhost /]# cat /etc/sysconfig/i18n
LANG="ru_RU.UTF-8"
SYSFONT="latarcyrheb-sun16"

P.S.: извиняюсь, если написал не в тот раздел...

Ответ на: комментарий от encyrtid

не знал про strace, крутая программа :). Дальше разобрался сам. Почему-то cron подключал либу /usr/lib64/gconv/ISO8859-1.so. Прописал в crontab LANG=ru_RU.UTF-8 и проблема решилась!

Если этой переменной среды там не прописать, то cron берёт её дефолтное значение. И вот тут я не понимаю, оно же вроде прописывается в /etc/sysconfig/i18n, почему тогда в системе дефолтное ISO8859-1?

forever_anton
() автор топика
Ответ на: комментарий от forever_anton

Если я не ошибаюсь, crontab не наследует переменные окружения.

И если проблема решена - отметь как решенную.

encyrtid ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.