Opened 8 years ago

Closed 8 years ago

Last modified 7 years ago

#197 closed баг (fixed)

В логе программы часть сообщений не читается

Reported by: alx Owned by: dimag
Priority: major Milestone: 2 очередь
Component: ПО MC04-Dispatcher. Пульт диспетчера/техника Keywords:
Cc: san

Description

Текст, выводимый в лог программы при старте, отображается нормально. Текст, появляющийся в логе при вызове абонента, не читается:


Attachments (1)

ss1.jpg (58.6 KB ) - added by alx 8 years ago.

Download all attachments as: .zip

Change History (8)

by alx, 8 years ago

Attachment: ss1.jpg added

comment:1 by dimag, 8 years ago

Resolution: fixed
Status: newclosed

r230
Возможно в вашей версии Linux кодировка по умолчанию отличная от UTF-8, которая используется по умолчанию в моём дистрибутиве.
Я добавил следующую строку в начало функции main.
QTextCodec *pCodec = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForLocale(pCodec);
Теперь везде должен использоваться одинаковый кодек для кодировок.

in reply to:  1 comment:2 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

Replying to dimag:

r230

Баг по-прежнему присутствует.

Возможно в вашей версии Linux кодировка по умолчанию отличная от UTF-8, которая используется по умолчанию в моём дистрибутиве.

Во-первых, не важно, какая кодировка по умолчанию, важно, какая кодировка локали установлена в текущий момент.

Во-вторых, программа тестировалась при кодировке локали UTF-8.

В-третьих, очень сомнительно, что в данном случае кодировка локали может играть какую-то роль, так как лишь часть сообщений отображается неверно - см. картинку.

Я добавил следующую строку в начало функции main.
QTextCodec *pCodec = QTextCodec::codecForName("utf-8");
QTextCodec::setCodecForLocale(pCodec);
Теперь везде должен использоваться одинаковый кодек для кодировок.

Не помогло.

comment:3 by alx, 8 years ago

Уточнение: в лог-файл записывается то же, что и отображается на экране - вопросительные знаки вместо букв. Это наводит на мысль, что в какой-то момент (в MainAppFrameWindow3::LogOutput()?) производилась перекодировка текста, при этом символы текста отсутствовали в кодировке результата, и поэтому были заменены символами '?'.

comment:4 by alx, 8 years ago

Resolution: fixed
Status: reopenedclosed

In 232/dispatcher:

При старте программы CodecForCStrings устанавливается в кодировку UTF-8.
Fixes #166,#171,#197.

comment:5 by alx, 8 years ago

Resolution: fixed
Status: closedreopened

Модификация, сделанная в r232, откачена в r233.

comment:6 by alx, 8 years ago

Resolution: fixed
Status: reopenedclosed

Исправлено в r235: QTextCodec::setCodecForCStrings() выполняется только для версий Qt меньше 5.

comment:7 by san, 7 years ago

Milestone: Текущее2 очередь

Milestone renamed

Note: See TracTickets for help on using tickets.