Служба, кодировка вывода ошибок в консоль
Модератор: Модераторы
Служба, кодировка вывода ошибок в консоль
Разбираюсь с созданием службы для windows
по статье http://www.freepascal.ru/article/lazaru ... 403120204/
Устанавливаю и и деинсталирую запуском в cmd с ключами -i и -u соответсвенно.
Иногда действие не выполняется и выдает ошибку (из-за моего кода) , но текст ошибки не в кодировке консоли, т.е. кракозябрами.
Подскажите пожалуйста, есть ли способ изменить кодировку вывода ошибки при установке службы?
по статье http://www.freepascal.ru/article/lazaru ... 403120204/
Устанавливаю и и деинсталирую запуском в cmd с ключами -i и -u соответсвенно.
Иногда действие не выполняется и выдает ошибку (из-за моего кода) , но текст ошибки не в кодировке консоли, т.е. кракозябрами.
Подскажите пожалуйста, есть ли способ изменить кодировку вывода ошибки при установке службы?
Последний раз редактировалось jsa 30.09.2019 08:38:13, всего редактировалось 1 раз.
Re: Служба, кодировка вывода ошибок в консоль
jsa
Вы программируете службу в Lazarus или мужественно прямо в FPC?
Вы программируете службу в Lazarus или мужественно прямо в FPC?
Re: Служба, кодировка вывода ошибок в консоль
Vadim писал(а):jsa
Вы программируете службу в Lazarus или мужественно прямо в FPC?
в Lazarus, руководствуясь примером в указанной статье. (сразу же написал)
Re: Служба, кодировка вывода ошибок в консоль
jsa писал(а):...руководствуясь примером...
Что вовсе не означает один-в-один...
Несколько кодировок лучше не смешивать в коде, выберите ту что надо, в ней всё и делайте.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Re: Служба, кодировка вывода ошибок в консоль
jsa
Вроде в винде сейчас можно задавать кодовую страницу консоли - или я ошибаюсь?
Когда писал статью - просто пользовался FAR-ом - там удобно копировать содержимое консоли - потом вставлял в окно редактора и перекодировал текст.
PS
В какойто момент отказался от винды в качестве платформы для сервисов/серверов. Уж очень много было мелких проблем. Сейчас всё службы перевёл на линукс.
Вроде в винде сейчас можно задавать кодовую страницу консоли - или я ошибаюсь?
Когда писал статью - просто пользовался FAR-ом - там удобно копировать содержимое консоли - потом вставлял в окно редактора и перекодировал текст.
PS
В какойто момент отказался от винды в качестве платформы для сервисов/серверов. Уж очень много было мелких проблем. Сейчас всё службы перевёл на линукс.
Re: Служба, кодировка вывода ошибок в консоль
alexs писал(а):Вроде в винде сейчас можно задавать кодовую страницу консоли - или я ошибаюсь?
Можно, но лучше не надо. А то потом забудешь обратно вернуть и все остальные проги будут отрыгивать кракозябры в консоль.
Код: Выделить всё
rem Родная кодировка для виндовой консоли
chcp 866
rem Кодировка UTF-8
chcp 65001Re: Служба, кодировка вывода ошибок в консоль
Vadim писал(а):В Lazarus можно исходный код быстро перевести в любую кодировку, на отображение в редакторе это нисколько не повлияет....
Спасибо. Но тут не та ситуация.
Я в консоль не свои сообщения вывожу. Этих текстов в файле исходника просто нет.
Это так ругается процедура установки и/или деинсталяции службы. Т.е. процедуры из компонент.
Добавлено спустя 3 минуты 40 секунд:
alexs писал(а):Когда писал статью - просто пользовался FAR-ом
Проверил и в Far2 и в Far3 - кракозябры
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Re: Служба, кодировка вывода ошибок в консоль
В модуле LazUTF8 есть полезные функции:
Код: Выделить всё
// converts OEM encoded string to UTF8 (used with some Windows specific functions)
function ConsoleToUTF8(const s: string): string;
// converts UTF8 string to console encoding (used by Write, WriteLn)
function UTF8ToConsole(const s: string): string;
// for all Windows supporting 8bit codepages (e.g. not WinCE)
// converts string in Windows code page to UTF8 (used with some Windows specific functions)
function WinCPToUTF8(const s: string): string;
// converts UTF8 string to Windows code page encoding (used by Write, WriteLn)
function UTF8ToWinCP(const s: string): string;
Re: Служба, кодировка вывода ошибок в консоль
serbod писал(а):В модуле LazUTF8 есть полезные функции:
Невнимательно читаете...
jsa написал, что он сам никакие строки в своей программе не выводит, следовательно, к какому месту прикладывать эти функции - непонятно...
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Re: Служба, кодировка вывода ошибок в консоль
jsa писал(а):Проверил и в Far2 и в Far3 - кракозябры
В редактор фара выставить кодировку, соответсвующюю кодировке консоло
потом скопировать текст (кракозябры) в редактор из консоли
после этого переключить редактор в кодировку UTF8 - текст отобразится нормально.
Re: Служба, кодировка вывода ошибок в консоль
Vadim писал(а):chcp 65001
Кракозябры, но другие.
В общем всем спасибо.
Думал секретная мега фича для такого случая. ну раз нет так нет.
Re: Служба, кодировка вывода ошибок в консоль
jsa писал(а):Кракозябры, но другие.
Тогда придётся перебирать все подряд. Попробуйте:
Код: Выделить всё
chcp 1251- Ichthyander
- энтузиаст
- Сообщения: 701
- Зарегистрирован: 04.04.2007 08:32:43
- Откуда: Астрахань
- Контактная информация:
Re: Служба, кодировка вывода ошибок в консоль
Код: Выделить всё
{$IFDEF MSWINDOWS}
SetConsoleOutputCP(CP_UTF8);{$ENDIF}