PDA

Просмотр полной версии : Кодировка UTF-8



KorSerO
15.10.2024, 10:23
Добрый день. Как для переменных типа STRING поменять кодировку со стандартной ASСII на UTF-8? Выяснил, что в Codesys версии 3.5.18 и выше достаточно в установках проекта поставить соответствующую галочку. Но у меня версия Codesys 3.5.17 и я так понял, что кодировку я могу прописать только с помощью прагмы {attribute 'monitoring_encoding' := 'UTF8'}. Как и указано в справке Codesys я ее указываю непосредственно перед объявлением переменной типа STRING. Но вижу что Codesys выдает предупреждение вида: Атрибут monitoring_encoding неизвестен и будет проигнорирован компилятором. Что с этим делать? Я получаю данные на ПЛК по OPC в кодировке UTF-8 и плк ее не переваривает и выводит либо белиберду, либо (что чаще происходит) ничего не выводит.
79399

Евгений Кислов
15.10.2024, 10:36
Добрый день.


Что с этим делать?

Например - использовать функцию ConvertUTF8toUTF16 из библиотеки StringUtils для преобразования полученного вами от OPC набор байт (представляющих собой строку в кодировке UTF-8) в переменную типа WSTRING.

KorSerO
15.10.2024, 13:14
Добрый день.



Например - использовать функцию ConvertUTF8toUTF16 из библиотеки StringUtils для преобразования полученного вами от OPC набор байт (представляющих собой строку в кодировке UTF-8) в переменную типа WSTRING.

Можете подсказать как использовать эту функцию?

Евгений Кислов
15.10.2024, 13:46
Можете подсказать как использовать эту функцию?

См. скриншоты.
https://onlinetools.com/utf8/convert-utf8-to-hexadecimal

79407 79408 79409

KorSerO
16.10.2024, 09:58
См. скриншоты.
https://onlinetools.com/utf8/convert-utf8-to-hexadecimal

79407 79408 79409

Сделал по вашему примеру: 79435 - переменные, 79436 - код.
Не работает. Запускаю Multi-Protocol Master OPC Server и вижу что даже туда данные не приходят извне.

Евгений Кислов
16.10.2024, 10:01
Не работает. Запускаю Multi-Protocol Master OPC Server и вижу

Я, к сожалению, этого не вижу.
Свяжитесь, пожалуйста, со мной по телеграм (см. в подписи) и продемонстрируйте это по AnyDesk.

ВладОвен
21.10.2024, 20:02
А если сделать преобразование UTF8_to_UTF16, то нужно строка вдвое длинней?

Евгений Кислов
21.10.2024, 20:26
А если сделать преобразование UTF8_to_UTF16, то нужно строка вдвое длинней?

Это неверное утверждение.