Таки да! Все заработало с LC_ALL=<пусто> Отпишу на всякий случай, может кому пригодится... Обычно я делал так:Логинюсь по ssh на прод. сервер. Первую команду которую выполняю - LC_ALL=C ибо mc и psql без этого плющит. Собираю проект, деплою. Дальше стартую jboss и получаю знаки вопроса в текстовых файлах.
Если оставить дефолтное значение в LC_ALL (пустое) - то всё работает как следует.
Вот дефолтная locale на сервере: LANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_PAPER="ru_RU.UTF-8" LC_NAME="ru_RU.UTF-8" LC_ADDRESS="ru_RU.UTF-8" LC_TELEPHONE="ru_RU.UTF-8" LC_MEASUREMENT="ru_RU.UTF-8" LC_IDENTIFICATION="ru_RU.UTF-8" LC_ALL= Виктор, спасибо за наводку! Павел.
Victor Wagner wrote:Кракозябли бывают разные. Какие именно? И какая локаль была у процесса, которым файлы читали. И вообще в какой операционной системе их читали?Генерились xml файлы. с encoding='UTF-8' в заголовке. Читает их настольное приложение на winxp (cp1251). Так же, естественно, пробую читать их вьювером kate у себя, по одной пытаясь применить ту или иную кодировки, увы без результата. Везде где русский текст вижу вопросительные знаки.Стал сравнивнивать окружение на тестовом и прод. серверах и выяснил что на тестовом сервере у процесса сервера LC_ALL=ru_RU.UTF-8, а на продакшн - LC_ALL=C. Для пробы изменил LC_ALL на продашн - русские буквы стали отображаться нормально.Вообще по хорошему счету LC_ALL вообще выставлять не надо. Если выставить LANG, то можно потом поменять отдельные категории, скажем LC_NUMERIC. А LC_ALL имеет более высокий приоритет.Сейчас попробую сделать LC_ALL пустой. Отпишу что из этого вышло. Спасибо за ответ! Павел.Вот что хочу спросить, где проблема? В моём коде который генерит UTF-8 текст и пишет его на диск или это потому что процесс у которого LC=C не может по определению писать на диск UTF-8 текст?Скорее всего - ни там, ни там. Между твоим кодом и системным вызовомwrite имеется куча промежуточных слоев - всякие библиотеки классов, собственноJRE, libc и т.д. Если в файле действительно НЕ русские буквы, в чем следует убедиться просмотрев файлы на системе с заведомо известнойлокалью, посредством наиболее примитивного вьюера, вроде less, а то и просмотром шестнадцатиричного дампа файла (хотя не люблючитать utf-8 в шестнадцатиричном виде. UTF-16 еще куда ни шло), то проблема скорее всего в каких-нибудь промежуточных библиотеках. Еще может быть что файлы пишутся в каком-нибудь формате, предусматривающем явное указание кодировки, например XML. И из-за неверной локали стандартная функция библиотеки, формирующая файл, может залепить туда например iso8859-1 в качестве кодировки, после чего написать честные русские буквы в utf-8. Тогда честный вьюер, учитывающий информацию из заголовков, покажет то, что обычно называют "крокозяблики" - латинские буквы со всякими надчерками и крышечками. А при просмотре в текстовом вьюере вроде less в правильной локали русские буквы будут видны.Спасибо! Павел. -- To UNSUBSCRIBE, email to debian-russian-REQUEST@lists.debian.orgwith a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org