Преобразовать русское название в UTF-8 и вернуть обратно

Учебные задачи

Размер строки в символах и размер передаваемых байтов различаются. Явно выбираем UTF-8 без BOM для обмена.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Выполняйте на сервере; файл не создаётся, сеть не используется.

  2. В первом запуске оставьте название Книга и параметр ЗаписатьBOM равным Ложь.

Название = "Книга";
Данные = ПолучитьДвоичныеДанныеИзСтроки(Название, КодировкаТекста.UTF8, Ложь);
Буфер = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Данные);
Сообщить(СтрДлина(Название));
Сообщить(Данные.Размер());
Сообщить(Буфер.Размер);
НазваниеИзДанных = ПолучитьСтрокуИзДвоичныхДанных(Данные, КодировкаТекста.UTF8);
НазваниеИзБуфера = ПолучитьСтрокуИзБуфераДвоичныхДанных(Буфер, КодировкаТекста.UTF8);
Сообщить(НазваниеИзДанных = Название);
Сообщить(НазваниеИзБуфера = Название);
ДругойБуфер = ПолучитьБуферДвоичныхДанныхИзСтроки(Название, КодировкаТекста.UTF8, Ложь);
ДругиеДанные = ПолучитьДвоичныеДанныеИзБуфераДвоичныхДанных(ДругойБуфер);
Сообщить(ДругиеДанные.Размер() = Данные.Размер());

Разбор по шагам

  1. Кодируем строку в двоичные данные с явно заданной кодировкой.

  2. Преобразуем двоичные данные в изменяемый буфер и сравниваем размеры.

  3. Декодируем данные и буфер той же кодировкой и проверяем равенство исходному названию.

  4. Повторяем путь через создание буфера прямо из строки.

Как проверить результат

  1. В названии 5 символов, в UTF-8 без BOM 10 байтов.

  2. Оба обратных преобразования возвращают Книга; все сравнения равны Истина.

Ожидаемый результат

Название восстановлено без потери русских букв; различие байтов и символов показано явно.

На что обратить внимание

  1. Передавая длину в сетевой протокол, уточните, требуются байты или символы: СтрДлина не заменяет размер UTF-8.

  2. Декодирование другой кодировкой может дать испорченный текст. BOM добавляйте только если его ждёт принимающая сторона.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.