Каталог решений - Код символа OEM

Код символа OEM

Код символа OEM

В наличии

Как получить код символа в кодировке OEM средствами платформы 1С V8?

Категория:

Описание

Стояла задача определить код символа в кодировке OEM силами платформы 1С V8. Как известно, платформа 1С предоставлет возможность определять код символа методом КодСимвола(), но загвоздка в том, что данный метод возвращает код в соответствии с кодировкой Unicode.

Было найдено решение, основанное на строковом представлении значений типа ДвоичныеДанные.

Суть метода состоит в следующем: исходная строка записывается в файл через объект типа ТекстовыйДокумент, используя кодировку OEM, затем создается объект типа ДвоичныеДанные на основе этого файла, далее анализируется строковое представление объекта. Строковое представление позволяет нам «увидеть» байты, т.е. коды символов переданной строки в шестнадцатеричном виде. Остается лишь преобразовать шестнадцатеричные коды в десятичные.

Ниже приведен пример функции:

 

Функция КодСимволаOEM(Строка, НомерСимвола)

    Алфавит16 = Новый Соответствие();
    Для Сч = 0 По 9 Цикл
        Алфавит16.Вставить(Формат(Сч, "ЧН="), Сч);
    КонецЦикла;
    Для Сч = КодСимвола("A") По КодСимвола("F") Цикл
        Алфавит16.Вставить(Символ(Сч), Алфавит16.Количество());
    КонецЦикла;

    ИФ = ПолучитьИмяВременногоФайла();

    Текст = Новый ТекстовыйДокумент();
    Текст.УстановитьТекст(Строка);
    Текст.Записать(ИФ, КодировкаТекста.OEM);

    ДД = Новый ДвоичныеДанные(ИФ);

    Приемник = Строка(ДД);
    Приемник = " " + Приемник;

    БайтСтр = ВРег(СокрЛП(Сред(Приемник, (НомерСимвола - 1) * 3 + 1, 3)));

    Результат = Алфавит16[Лев(БайтСтр, 1)] * 16 + Алфавит16[Прав(БайтСтр, 1)];

    Возврат Результат;

КонецФункции


has been added to your cart:
Оформление заказа