1С 8.3 Перевод любых символов в Unicode - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Перевод любых символов в Unicode

Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Функция, которая корректно преобразуют в 1С 8.3 строку из любых символов в Unicode.

Конвертация строки в Unicode из любых символов в 1С 8.3:
Функция UnicodeDecodeAny(Строка) Экспорт

   Результат = "";
   Попытка //регулярное выражение
       Колекция = Новый Массив; //РегВыр.Execute(Строка);
       Для Каждого Элемент Из Колекция Цикл
           Если СтрДЛина(Элемент.value) = 1 Тогда
               Продолжить;
           КонецЕсли;

           КодСимвола = DecHex(Сред(ВРег(Элемент.value), 2));
           Символ = Символ(КодСимвола);
           Строка = СтрЗаменить(Строка, "\" + Элемент.value, Символ);
       КонецЦикла;
       Результат = Строка; //СтрЗаменить(Строка, "<br \/>", "");
   Исключение
       Результат = Строка;
       Сообщить("Ошибка преобразования из Unicode", СтатусСообщения.Информация);
   КонецПопытки;

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

КонецФункции
Пример №2 Конвертация строки из Unicode в UTF-8 (от пользователя Ruffer1C) в 1С 8.3:
Функция DecHex(Знач Значение)

   Результат = 0;

   Числа = Новый Соответствие;
   Числа.Вставить("0", 0);
   Числа.Вставить("1", 1);
   Числа.Вставить("2", 2);
   Числа.Вставить("3", 3);
   Числа.Вставить("4", 4);
   Числа.Вставить("5", 5);
   Числа.Вставить("6", 6);
   Числа.Вставить("7", 7);
   Числа.Вставить("8", 8);
   Числа.Вставить("9", 9);
   Числа.Вставить("A", 10);
   Числа.Вставить("B", 11);
   Числа.Вставить("C", 12);
   Числа.Вставить("D", 13);
   Числа.Вставить("E", 14);
   Числа.Вставить("F", 15);
   //...

   //перевод значения в строку
   Если ТипЗнч(Значение) <> Тип("Строка") Тогда
       Значение = СокрЛП(Строка(Значение));
   КонецЕсли;

   МаксРазрядЦелых = СтрДлина(Значение) - 1;
   ЮниКод = МаксРазрядЦелых;

   Разр = 1;
   Пока ЮниКод >= 0 Цикл
       ТекЗначение = Числа.Получить(Сред(Значение, Разр, 1)) * Pow(16, ЮниКод);
       Результат = Результат + ТекЗначение;
       ЮниКод = ЮниКод - 1;
       Разр = Разр + 1;
   КонецЦикла;

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

КонецФункции
1
комментарий
Михаил
26 авг 2024
Этот код не работает!
____________________
Copyright©, «Программист 1С в г.Минске», 24.09.2022
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому