Декодирует русские символы в юникоде (UnicodeEncode) и любые символы в юникоде (UnicodeEncode2, исп. вспом. ф-ю ПереводЧислаИз16в10)
Функция UnicodeEncode(Строка) Экспорт
Результат = Строка;
СписокСимволов = Новый СписокЗначений;
СписокСимволов.Добавить("\u0430", "а");
СписокСимволов.Добавить("\u0431", "б");
СписокСимволов.Добавить("\u0432", "в");
СписокСимволов.Добавить("\u0433", "г");
СписокСимволов.Добавить("\u0434", "д");
СписокСимволов.Добавить("\u0435", "е");
СписокСимволов.Добавить("\u0451", Символ(1105));
СписокСимволов.Добавить("\u0436", "ж");
СписокСимволов.Добавить("\u0437", "з");
СписокСимволов.Добавить("\u0438", "и");
СписокСимволов.Добавить("\u0439", "й");
СписокСимволов.Добавить("\u043a", "к");
СписокСимволов.Добавить("\u043b", "л");
СписокСимволов.Добавить("\u043c", "м");
СписокСимволов.Добавить("\u043d", "н");
СписокСимволов.Добавить("\u043e", "о");
СписокСимволов.Добавить("\u043f", "п");
СписокСимволов.Добавить("\u0440", "р");
СписокСимволов.Добавить("\u0441", "с");
СписокСимволов.Добавить("\u0442", "т");
СписокСимволов.Добавить("\u0443", "у");
СписокСимволов.Добавить("\u0444", "ф");
СписокСимволов.Добавить("\u0445", "х");
СписокСимволов.Добавить("\u0446", "ц");
СписокСимволов.Добавить("\u0447", "ч");
СписокСимволов.Добавить("\u0448", "ш");
СписокСимволов.Добавить("\u0448", "щ");
СписокСимволов.Добавить("\u044a", "ъ");
СписокСимволов.Добавить("\u044b", "ы");
СписокСимволов.Добавить("\u044c", "ь");
СписокСимволов.Добавить("\u044d", "э");
СписокСимволов.Добавить("\u044e", "ю");
СписокСимволов.Добавить("\u044f", "я");
СписокСимволов.Добавить("\u0410", "А");
СписокСимволов.Добавить("\u0411", "Б");
СписокСимволов.Добавить("\u0412", "В");
СписокСимволов.Добавить("\u0413", "Г");
СписокСимволов.Добавить("\u0414", "Д");
СписокСимволов.Добавить("\u0415", "Е");
СписокСимволов.Добавить("\u0401", Символ(1025));
СписокСимволов.Добавить("\u0416", "Ж");
СписокСимволов.Добавить("\u0417", "З");
СписокСимволов.Добавить("\u0418", "И");
СписокСимволов.Добавить("\u0419", "Й");
СписокСимволов.Добавить("\u041a", "К");
СписокСимволов.Добавить("\u041b", "Л");
СписокСимволов.Добавить("\u041c", "М");
СписокСимволов.Добавить("\u041d", "Н");
СписокСимволов.Добавить("\u041e", "О");
СписокСимволов.Добавить("\u041f", "П");
СписокСимволов.Добавить("\u0420", "Р");
СписокСимволов.Добавить("\u0421", "С");
СписокСимволов.Добавить("\u0422", "Т");
СписокСимволов.Добавить("\u0423", "У");
СписокСимволов.Добавить("\u0424", "Ф");
СписокСимволов.Добавить("\u0425", "Х");
СписокСимволов.Добавить("\u0426", "Ц");
СписокСимволов.Добавить("\u0427", "Ч");
СписокСимволов.Добавить("\u0428", "Ш");
СписокСимволов.Добавить("\u0428", "Щ");
СписокСимволов.Добавить("\u042a", "Ъ");
СписокСимволов.Добавить("\u042b", "Ы");
СписокСимволов.Добавить("\u042c", "Ь");
СписокСимволов.Добавить("\u042d", "Э");
СписокСимволов.Добавить("\u042e", "Ю");
СписокСимволов.Добавить("\u042f", "Я");
СписокСимволов.Добавить("\u0022", "'");
СписокСимволов.Добавить("\u003E", ">");
СписокСимволов.Добавить("\u003е", ">");
СписокСимволов.Добавить("\u003C", "<");
СписокСимволов.Добавить("\u003c", "<");
Для Каждого текЭлемент Из СписокСимволов Цикл
Результат = СтрЗаменить(Результат,текЭлемент.Значение, текЭлемент.Представление);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция UnicodeEncode2(Строка) Экспорт
Результат = "";
Попытка
//регулярное выражение
Колекция = Новый Массив; //РегВыр.Execute(Строка);
Для Каждого Элемент Из Колекция Цикл
Если СтрДЛина(Элемент.value) = 1 Тогда
Продолжить;
КонецЕсли;
КодСимвола = ПереводЧислаИз16в10(Сред(ВРег(Элемент.value), 2));
Символ = Символ(КодСимвола);
Строка = СтрЗаменить(Строка, "\" + Элемент.value, Символ);
КонецЦикла;
Результат = Строка; //СтрЗаменить(Строка, "<br \/>", "");
Исключение
Результат = Строка;
Сообщить("Ошибка преобразования из Unicode", СтатусСообщения.Информация);
КонецПопытки;
Возврат Результат;
КонецФункции
Функция ПереводЧислаИз16в10(Знач Значение)
СтруктураЧисел = Новый Соответствие;
СтруктураЧисел.Вставить("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);
Результат = 0;
//перевод значения в строку
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
Значение = СокрЛП(Строка(Значение));
КонецЕсли;
МаксРазрядЦелых = 0;
МаксРазрядЦелых = СтрДлина(Значение) - 1;
н = МаксРазрядЦелых;
Ин = 1;
Пока н >= 0 Цикл
ТекЗначение = СтруктураЧисел.Получить(Сред(Значение, Ин, 1)) * Pow(16, н);
Результат = Результат + ТекЗначение;
н = н - 1;
Ин = Ин + 1;
КонецЦикла;
Возврат Результат;
КонецФункции
{146} Переменной МаксРазрядЦелых присвоено значение, но оно нигде не используется Орфографическая ошибка в юникоде (найдено 2): юникоде Орфографическая ошибка в вспом: вспом Орфографическая ошибка в Колекция (найдено 2): Колекция
#1, ред. 06 января 2023 22:27
Чуть более короткая функция перевода числа из 16'тиричной системы в 10'тиричную.
#2, 09 января 2023 13:46
Ещё чуть более короткая функция перевода числа из 16'теричной системы в 10'теричную.
Есть платформенная функция ЧислоИзШестнадцатеричнойСтроки (начиная с версии 8.3.10).
#3, 09 января 2023 14:03
Чуть более короткая функция UnicodeEncode.
(Объект ЧтениеJSON есть начиная с версии 8.3.6.)