Показано с 1 по 4 из 4

Тема: Багрепорт по OWEN-библиотеке ASCII_TO_UNICOD(3.5.3.40).compiled-library-ge33

  1. #1
    Пользователь Аватар для porada
    Регистрация
    18.10.2012
    Адрес
    Москва
    Сообщений
    6

    По умолчанию Багрепорт по OWEN-библиотеке ASCII_TO_UNICOD(3.5.3.40).compiled-library-ge33

    1. Символ 0x8D кодируется на выходе нулем вместо 0x040C
    (Пруф из файла ftp://ftp.unicode.org/Public/MAPPING...WS/CP1251.TXT:
    ..
    0x8D 0x040C #CYRILLIC CAPITAL LETTER KJE
    .. )

    2. Перекодируется максимум 81 символ, но об этом нигде не упоминается. (Даже не 80, что как-то объяснялось бы длиной типов STRING и WSTRING по умолчанию). Если в функцию передать ссылку на WSTRING(10) то оставшиеся 142 байта затрут чего-нибудь в области данных с непредсказуемыми последствиями. Или даже если на WSTRING, то ноль в конце уже не поместится и что-то затрет.
    А лучше переделать вызов на явное указание длины:
    ASCII_TO_UNICOD2(p_STR_IN:=ADR(strAscii) , p_STR_OUT:=ADR(wstrUnicode), size:=SIZEOF(wstrUnicode));

    3. Функция всегда возвращает FALSE. Это можно считать feature. Но лучше бы возвращать что-то полезное, например ошибку если входная строка длиннее выходного буфера, или просто длину выходной строки.

    4. Символ 0x98 не определен в кодовой странице CP-1251 и сейчас кодируется нулем, что принудительно завершает строку, хотя последующие за ним символы все равно заносятся в выходную строку. Традиционно в Unicode для таких случаев используется:
    U+FFFD � replacement character

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,147

    По умолчанию

    Добрый день. Актуальным средством конвертации кодировок сейчас является библиотека OwenStringUtils:
    http://www.owen.ru/forum/showthread.php?t=25981

    Мы протестируем на ней ваши замечания, и если они повторятся - внесем исправления.

  3. #3

  4. #4

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Проверил - п. 1 и 2 в OwenStringUtils не воспроизводятся.
    П. 4 - 0x98 конвертируется в Unicode как 0x0098 ("˜"). Постараемся исправить в следующей версии.
    Устранено в версии 3.5.4.2 OwenStringUtils

Похожие темы

  1. Еще раз о библиотеке SysLibSockets
    от dudanov в разделе ПЛК1хх
    Ответов: 52
    Последнее сообщение: 28.01.2015, 15:41
  2. ComService.compiled-library
    от GeLeX в разделе СПК2хх
    Ответов: 4
    Последнее сообщение: 30.09.2013, 10:08
  3. По библиотеке UNM
    от Сергей Мих в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 25.04.2012, 23:06
  4. ПЛК304 + ModBus.compiled-library
    от Jumo в разделе ПЛК3хх
    Ответов: 20
    Последнее сообщение: 02.12.2011, 13:30

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •