УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

[BugFixed] Ошибка перекодировки из UTF-8 в KOI8-R


Автор Сообщение
Сообщение создано: 29. 11. 2012 [15:17]
trotila
Юрий
Создатель темы
Зарегистрирован(а) с: 09.04.2012
Сообщения: 10
Текст ошибки :
5|IConv | Ошибка преобразования входной последовательности: Неверный или неполный мультибайтный или широкий знак
0|IConv | Ошибка преобразования из UTF-8 в KOI8-R для части сообщения: Привет


Условия возникновения:
Запуск проекта или редактирование визуального элемента, основонного на базовом виджете Документ, со значением атрибута Шаблон равным:
JAVASCRIPT
<body>
	<h4> Привет</h4>
</body>


Для возникновения ошибки необходимо наличие не латинских символов в тегах и атрибутах атрибута Шаблон виджета Документ.
После запуска проекта или открытия окна редактирования визуального элемента, виджет содержит текст "Привет" в кодировке UTF-8 п÷я─п╦п╡п╣я┌

Исходные даныне:

Атрибуты станции:
-Внутренняя кодировка:KOI8-R
-Язык: ru_RU.KOI8-R

Версия утилиты ivonv 2.3.6

Вывод команды locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"
LC_ALL=


Аналогичная проблема с кодировкой при работе с модулями ui_WebCfgD, ui_WebVision. Вместо кирилических символов на экране текст в кодировке UTF-8
Сообщение создано: 29. 11. 2012 [15:52]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"trotila" wrote:

Текст ошибки :
5|IConv | Ошибка преобразования входной последовательности: Неверный или неполный мультибайтный или широкий знак
0|IConv | Ошибка преобразования из UTF-8 в KOI8-R для части сообщения: Привет



Это не ошибка OpenSCADA, а отсутствие в libiconv или встроенной функции iconv одной из кодировок. Проверяем командой "$ iconv -l". Во всяком случае с подобной проблемой недавно сталкивался на Segnetics SMH2Gi с системной кодировкой ru_RU.CP1251.

Learn, learn and learn better than work, work and work.
Сообщение создано: 30. 11. 2012 [08:05]
trotila
Юрий
Создатель темы
Зарегистрирован(а) с: 09.04.2012
Сообщения: 10
Библиотека libiconv(liconv) в системе отсутствует.
В выводе команды $iconv -l требуемые кодировки присутствуют.

Вывод команды iconv -l | grep KOI.*8.*R :
CSKOI8R//
KOI8-R//
KOI8R//

Вывод команды iconv -l | grep UTF.*8 :
ISO-10646/UTF-8/
ISO-10646/UTF8/
UTF-8//
UTF8//

Сообщение создано: 30. 11. 2012 [08:23]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"trotila" wrote:

Библиотека libiconv(liconv) в системе отсутствует.
В выводе команды $iconv -l требуемые кодировки присутствуют.

OK, только OpenSCADA всёравно не занимается перекодировкой, а использует для этого "iconv" и нет у меня таких проблем, да и систем с отличной от кодировки UTF-8 давно нет, не считая SMH2Gi где GUI не используется, но при случае попробую на своей машине сменить локаль на ru_RU.UTF-8.

Learn, learn and learn better than work, work and work.
Сообщение создано: 30. 11. 2012 [09:00]
trotila
Юрий
Создатель темы
Зарегистрирован(а) с: 09.04.2012
Сообщения: 10
"trotila" wrote:

Текст ошибки :
5|IConv | Ошибка преобразования входной последовательности: Неверный или неполный мультибайтный или широкий знак
0|IConv | Ошибка преобразования из UTF-8 в KOI8-R для части сообщения: Привет



Считаю что проблема не в утилите iconv. Почему-то OpenScada пытается вызвать функцию перекодирования из UTF-8 в KOI8-R для текста в кодировке KOI8-R, это естественным образом вызывает ошибку.

Установка языка LANG в ru_RU.UTF-8 решает данную проблему.

Спасибо.

[Сообщение редактировалось 3 раз(а), в последний раз 30.11.2012 в 10:21.]
Сообщение создано: 01. 12. 2012 [16:01]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"roman" wrote:

OK, только OpenSCADA всёравно не занимается перекодировкой, а использует для этого "iconv" и нет у меня таких проблем, да и систем с отличной от кодировки UTF-8 давно нет, не считая SMH2Gi где GUI не используется, но при случае попробую на своей машине сменить локаль на ru_RU.UTF-8.

Была проблема с работой на однобайтовых кодировках, в коде появившемся уже после вытеснения их UTF-8. Исправил — всё вроде работает. Попутно преобразование с одной кодировки в другую сделал тихим, без сообщений и проходящим до конца, т.е. теперь если встречаются символы, которых нет в целевой кодировке они будут заменяться на символ '?', что характерно для преобразования из обобщённой UTF-8 в одно-байтовые. Также сделал проблему отсутствия описания сущностей, при парсинге XML, некритической и эти сущности тоже меняются на '?'.

Собственно использовать OpenSCADA на однобайтовых кодировках сейчас можно, однако с оглядкой на факт отсутствия там символов вроде '—', '№', а так-же многих сущностей при парсинге XML, XHTML, например, "&nbsp;".

Learn, learn and learn better than work, work and work.
Сообщение создано: 04. 12. 2012 [14:33]
trotila
Юрий
Создатель темы
Зарегистрирован(а) с: 09.04.2012
Сообщения: 10
Текущая конфигурация OpenSCADA-станции без проблем встала на новую сборку проекта, решив все имеющееся проблемы. Спасибо!

Только, обнаружилась еще одна проблема. Суть её заключается в том, что все скрипты на языке пользовательского программирования (JavaLikeCalc) не отображают кириллические символы в графическом элементе "поле ввода", в котором они вводятся. При этом, символы участвуют при компиляции скрипта (OpenSCADA в своем внутреннем представлении их видит, а отобразить не может).

Язык системы по-прежнему ru_RU.KOI8-R.
Сообщение создано: 04. 12. 2012 [15:13]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"trotila" wrote:

Только, обнаружилась еще одна проблема. Суть её заключается в том, что все скрипты на языке пользовательского программирования (JavaLikeCalc) не отображают кириллические символы в графическом элементе "поле ввода", в котором они вводятся.

Это где конкретно? У меня всё нормально и везде отображается.


Learn, learn and learn better than work, work and work.
Сообщение создано: 04. 12. 2012 [15:53]
trotila
Юрий
Создатель темы
Зарегистрирован(а) с: 09.04.2012
Сообщения: 10
"roman" wrote:


Это где конкретно?


1) в функциях библиотек DAQ_JavaLikeCalc
2) в программах в ui_WebUser
3) В шаблонах DAQ_LogicLev
4) Во вкладке обработка ui_Vision

Это проявляется при языке системы ru_RU.KOI8-R
Сообщение создано: 04. 12. 2012 [17:41]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3747
"trotila" wrote:

1) в функциях библиотек DAQ_JavaLikeCalc

Нормально.

"trotila" wrote:

2) в программах в ui_WebUser

Тут исходно текста с кириллицей у меня нет, но вводится нормально.

"trotila" wrote:

3) В шаблонах DAQ_LogicLev

Тут нормально.

"trotila" wrote:

4) Во вкладке обработка ui_Vision

И тут нормально.

Похоже QT4 ожидает текст не в системной кодировке KOI8-R, чего у меня нет. Похоже это проблема QT4 версии, которая у Вас или её сборка-конфигурация некорректна. У меня Qt 4.8.3.

Learn, learn and learn better than work, work and work.



10029