1С 8.3 Преобразование обычной строки в формат Base64
Данные > Примеры кода 1С > 1С 8.3 HTTP
Перейти в раздел примеры кода 1С 8.3:

Формат Base64 используется для:
- Передачи бинарных данных через текстовые протоколы (например, в JSON, XML, email).
- Хранения файлов в текстовом виде (например, вставка картинок в HTML/CSS).
- Безопасной передачи строк без искажения (например, в HTTP-запросах).
Если нужно раскодировать Base64, используйте следующие функции:
Кодирование строки в Base64:
// Функция преобразует строку в формат Base64
//
// Параметры:
// Строка - Строка - Текст для кодирования
// Кодировка - КодировкаТекста - Кодировка исходной строки (по умолчанию UTF-8)
// ЗаписатьBOM - Булево - Флаг записи метки порядка байтов (BOM)
//
// Возвращаемое значение:
// Строка - Текст в кодировке Base64
//
Функция КодироватьСтрокуВBase64(Знач Строка,
Знач Кодировка = Неопределено,
Знач ЗаписатьBOM = Ложь) Экспорт
// Устанавливаем кодировку по умолчанию, если не указана
Если Не ЗначениеЗаполнено(Кодировка) Тогда
Кодировка = КодировкаТекста.UTF8;
КонецЕсли;
// Преобразуем строку в двоичные данные
ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки(Строка, Кодировка, ЗаписатьBOM);
// Кодируем двоичные данные в Base64
Результат = Base64Строка(ДвоичныеДанные);
Возврат Результат;
КонецФункции
//
// Параметры:
// Строка - Строка - Текст для кодирования
// Кодировка - КодировкаТекста - Кодировка исходной строки (по умолчанию UTF-8)
// ЗаписатьBOM - Булево - Флаг записи метки порядка байтов (BOM)
//
// Возвращаемое значение:
// Строка - Текст в кодировке Base64
//
Функция КодироватьСтрокуВBase64(Знач Строка,
Знач Кодировка = Неопределено,
Знач ЗаписатьBOM = Ложь) Экспорт
// Устанавливаем кодировку по умолчанию, если не указана
Если Не ЗначениеЗаполнено(Кодировка) Тогда
Кодировка = КодировкаТекста.UTF8;
КонецЕсли;
// Преобразуем строку в двоичные данные
ДвоичныеДанные = ПолучитьДвоичныеДанныеИзСтроки(Строка, Кодировка, ЗаписатьBOM);
// Кодируем двоичные данные в Base64
Результат = Base64Строка(ДвоичныеДанные);
Возврат Результат;
КонецФункции
Функция КодироватьСтрокуВBase64() предназначена для преобразования обычной строки в формат Base64 (стандарт кодирования бинарных данных в текстовый вид).
Кодирование/декодирование строки в Base64:
&НаКлиенте
// Процедура декодирования строки из Base64
//
// Параметры:
// Команда - Строка - Не используется (параметр командной формы)
//
Процедура ДекодироватьИзBase64(Команда)
// Декодируем Base64 в двоичные данные
ДвоичныеДанные = Base64Значение(Encoded);
// Проверка корректности формата Base64
Если ДвоичныеДанные = Неопределено Тогда
Предупреждение("Ошибка: некорректный формат Base64");
Возврат;
КонецЕсли;
// Создаем временный файл для промежуточного хранения
ВременныйФайл = ПолучитьИмяВременногоФайла();
ДвоичныеДанные.Записать(ВременныйФайл);
// Определяем кодировку для чтения файла
КодировкаДляЧтения = ПолучитьКодировкуИзСтроки(Кодировка);
// Читаем содержимое файла в нужной кодировке
ЧтениеТекста = Новый ЧтениеТекста(ВременныйФайл, КодировкаДляЧтения);
Decoded = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
// Удаляем временный файл
УдалитьФайлы(ВременныйФайл);
КонецПроцедуры
&НаКлиенте
// Процедура кодирования строки в Base64
//
// Параметры:
// Команда - Строка - Не используется (параметр командной формы)
//
Процедура КодироватьВBase64(Команда)
// Определяем кодировку для записи файла
КодировкаДляЗаписи = ПолучитьКодировкуИзСтроки(Кодировка);
// Создаем временный файл
ВременныйФайл = ПолучитьИмяВременногоФайла();
// Записываем текст в файл с указанной кодировкой
ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл, КодировкаДляЗаписи);
ЗаписьТекста.Записать(Decoded);
ЗаписьТекста.Закрыть();
// Читаем файл как двоичные данные и кодируем в Base64
ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
Encoded = Base64Строка(ДвоичныеДанные);
// Удаляем временный файл
УдалитьФайлы(ВременныйФайл);
КонецПроцедуры
// Функция преобразует строковое представление кодировки в тип КодировкаТекста
//
// Параметры:
// КодировкаСтрокой - Строка - Строковое представление кодировки
//
// Возвращаемое значение:
// КодировкаТекста - Соответствующая кодировка
//
Функция ПолучитьКодировкуИзСтроки(Знач КодировкаСтрокой)
Если КодировкаСтрокой = "ANSI" Тогда
Возврат КодировкаТекста.ANSI;
ИначеЕсли КодировкаСтрокой = "OEM" Тогда
Возврат КодировкаТекста.OEM;
ИначеЕсли КодировкаСтрокой = "UTF8" Тогда
Возврат КодировкаТекста.UTF8;
ИначеЕсли КодировкаСтрокой = "UTF16" Тогда
Возврат КодировкаТекста.UTF16;
ИначеЕсли КодировкаСтрокой = "Системная" Тогда
Возврат КодировкаТекста.Системная;
КонецЕсли;
// Возвращаем UTF-8 по умолчанию
Возврат КодировкаТекста.UTF8;
КонецФункции
// Процедура декодирования строки из Base64
//
// Параметры:
// Команда - Строка - Не используется (параметр командной формы)
//
Процедура ДекодироватьИзBase64(Команда)
// Декодируем Base64 в двоичные данные
ДвоичныеДанные = Base64Значение(Encoded);
// Проверка корректности формата Base64
Если ДвоичныеДанные = Неопределено Тогда
Предупреждение("Ошибка: некорректный формат Base64");
Возврат;
КонецЕсли;
// Создаем временный файл для промежуточного хранения
ВременныйФайл = ПолучитьИмяВременногоФайла();
ДвоичныеДанные.Записать(ВременныйФайл);
// Определяем кодировку для чтения файла
КодировкаДляЧтения = ПолучитьКодировкуИзСтроки(Кодировка);
// Читаем содержимое файла в нужной кодировке
ЧтениеТекста = Новый ЧтениеТекста(ВременныйФайл, КодировкаДляЧтения);
Decoded = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();
// Удаляем временный файл
УдалитьФайлы(ВременныйФайл);
КонецПроцедуры
&НаКлиенте
// Процедура кодирования строки в Base64
//
// Параметры:
// Команда - Строка - Не используется (параметр командной формы)
//
Процедура КодироватьВBase64(Команда)
// Определяем кодировку для записи файла
КодировкаДляЗаписи = ПолучитьКодировкуИзСтроки(Кодировка);
// Создаем временный файл
ВременныйФайл = ПолучитьИмяВременногоФайла();
// Записываем текст в файл с указанной кодировкой
ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл, КодировкаДляЗаписи);
ЗаписьТекста.Записать(Decoded);
ЗаписьТекста.Закрыть();
// Читаем файл как двоичные данные и кодируем в Base64
ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
Encoded = Base64Строка(ДвоичныеДанные);
// Удаляем временный файл
УдалитьФайлы(ВременныйФайл);
КонецПроцедуры
// Функция преобразует строковое представление кодировки в тип КодировкаТекста
//
// Параметры:
// КодировкаСтрокой - Строка - Строковое представление кодировки
//
// Возвращаемое значение:
// КодировкаТекста - Соответствующая кодировка
//
Функция ПолучитьКодировкуИзСтроки(Знач КодировкаСтрокой)
Если КодировкаСтрокой = "ANSI" Тогда
Возврат КодировкаТекста.ANSI;
ИначеЕсли КодировкаСтрокой = "OEM" Тогда
Возврат КодировкаТекста.OEM;
ИначеЕсли КодировкаСтрокой = "UTF8" Тогда
Возврат КодировкаТекста.UTF8;
ИначеЕсли КодировкаСтрокой = "UTF16" Тогда
Возврат КодировкаТекста.UTF16;
ИначеЕсли КодировкаСтрокой = "Системная" Тогда
Возврат КодировкаТекста.Системная;
КонецЕсли;
// Возвращаем UTF-8 по умолчанию
Возврат КодировкаТекста.UTF8;
КонецФункции
Процедура КодироватьСтрокуВBase64() - преобразует строку в формат Base64 с возможностью указания кодировки и управления меткой порядка байтов (BOM). Процедура ДекодироватьИзBase64() - декодирует строку из Base64 обратно в текст с учетом указанной кодировки.
Эти методы полезны для:
- Безопасной передачи данных через API (JSON/XML).
- Хранения бинарных данных (например, картинок) в текстовом виде.
- Работы с файлами в разных кодировках.
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник