ЧтениеДанных.КодировкаТекста

Свойства · TextEncoding

Тип: КодировкаТекста, Строка. Кодировка текста, используемая по умолчанию для данного экземпляра ЧтениеДанных. Кодировка может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки. Поддерживаемые названия кодировок: UTF-8 UTF-16 UTF-16BE UTF-16LE ISO-8859-1 US-ASCII gb18030 iso-8859-2 iso-8859-3 iso-8859-4 iso-8859-5 iso-8859-6 iso-8859-7 iso-8859-8 iso-8859-9 iso-8859-13 iso-8859-15 Shift_JIS EUC-JP Big5 Big5-HKSCS GBK GB2312 GB_2312-80 EUC-KR KSC_5601 windows-949 windows-874 cp866 KOI8-R KOI8-U windows-1250 windows-1251 windows-1252 windows-1253 windows-1254 windows-1255 windows-1256 windows-1257 windows-1258 macintosh x-mac-cyrillic ISO-2022-JP ISO-2022-KR ISO-2022-CN ISO-2022-CN-EXT HZ-GB-2312

Полное описание, параметры и ограничения

ЧтениеДанных.КодировкаТекста (DataReader.TextEncoding)

ЧтениеДанных (DataReader)

КодировкаТекста (TextEncoding)

Доступен, начиная с версии 8.3.9.

Использование:
Чтение и запись.
Описание:
Тип: КодировкаТекста, Строка.
Кодировка текста, используемая по умолчанию для данного экземпляра ЧтениеДанных.
Кодировка может быть задана как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Поддерживаемые названия кодировок:
UTF-8

UTF-16

UTF-16BE

UTF-16LE

ISO-8859-1

US-ASCII

gb18030

iso-8859-2

iso-8859-3

iso-8859-4

iso-8859-5

iso-8859-6

iso-8859-7

iso-8859-8

iso-8859-9

iso-8859-13

iso-8859-15

Shift_JIS

EUC-JP

Big5

Big5-HKSCS

GBK

GB2312

GB_2312-80

EUC-KR

KSC_5601

windows-949

windows-874

cp866

KOI8-R

KOI8-U

windows-1250

windows-1251

windows-1252

windows-1253

windows-1254

windows-1255

windows-1256

windows-1257

windows-1258

macintosh

x-mac-cyrillic

ISO-2022-JP

ISO-2022-KR

ISO-2022-CN

ISO-2022-CN-EXT

HZ-GB-2312

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.3.9.

Методическая информация

Практические примеры

Отличить запись символов от записи строки с разделителем

Создаём в памяти текст Книга/Ручка в UTF-8. У строки есть завершающий перевод строки; у простого набора символов его нет.

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

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

Подготовка

  1. Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.

  2. Все исходные байты создаются самим примером в памяти. Файлы, сеть, справочники и документы не нужны.

  3. Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.

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

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

  1. В конструкторе ЗаписьДанных явно указаны кодировка UTF-8, разделитель для ЗаписатьСтроку ПС, конвертируемый разделитель ВК+ПС и отсутствие BOM.

  2. ЗаписатьСимволы не добавляет разделитель, но содержащийся в переданном тексте ПС конвертируется в ВК+ПС.

  3. ЗаписатьСтроку записывает текст и добавляет РазделительСтрок. Поэтому после Ручка будет один ПС.

  4. ПрочитатьСимволы нормализует ВК+ПС обратно в ПС; полученную строку проверяем целиком.

  5. Для построчного чтения создаём новый экземпляр с начала данных. ПрочитатьСтроку возвращает текст без завершающего разделителя.

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

  1. Сырые данные содержат Книга + ВК+ПС + Ручка + ПС; после нормализации оба разделителя — ПС.

  2. Два построчных вызова возвращают Книга и Ручка; все сравнения Истина.

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

Показано, где возникают разделители и как нормализация влияет на текст.

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

  1. ЗаписатьСимволы — не побайтовая запись: преобразование переводов строк предусмотрено API.

  2. Позиция чтения продвигается. Для повторного разбора от начала создаём новый ЧтениеДанных.

  3. Для точного двоичного формата передавайте ДвоичныеДанные/БуферДвоичныхДанных, а не текст с неявной конвертацией.

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

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

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

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

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