У меня странные проблемы с юникодом, которые я не могу понять.
По сути, у меня есть приложение для командной строки, которое при ручном запуске из командной строки успешно вызывает mbtowcs () для различных входных данных (http://www.cplusplus.com/reference/clibrary/cstdlib/mbstowcs/) управляет строками и возвращает правильный вывод.
Всякий раз, когда приложение запускается автоматически с помощью monit, эта функция больше не преобразует правильное число байтов, а вывод в основном искажается и перемежается с бриллиантами ошибки Unicode. Я проверил это для тех же самых входов.
Я подозреваю, что это связано с локалью или некоторыми настройками на машине (Ubuntu server 11.04). Я звоню setlocale (LC_CTYPE, ""); успешно в моей функции запуска.
Кто-нибудь может мне посоветовать, какие настройки системы мне следует изменить, чтобы заставить мой код работать правильно?
Обновление: похоже на изменение
setlocale(LC_CTYPE, "");
до
setlocale(LC_CTYPE, "en_US.UTF-8");
Возможно, проблема решена. Кто-нибудь может предоставить какую-либо информацию о том, почему это необходимо, или как я могу изменить настройки системы, чтобы избежать этого?