Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
ERR_1C_TEXT_ENCODING_INVALID 1С:Предприятие и СУБД

Неверно указана кодировка при чтении текстового документа в 1С — Решение

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Исключение: Неверно указана кодировка при чтении текстового документа.
  • Чтение файла возвращает нечитаемые символы («кракозябры», , иероглифы).
  • Сбой методов ЧтениеТекста.Открыть(), ТекстовыйДокумент.Прочитать().
  • Наличие скрытого маркера последовательности байтов (BOM — Byte Order Mark).

1. Корректное указание кодировки через объект ЧтениеТекста

Всегда явно задавайте стандартную кодировку при открытии файлового потока:

// Чтение файла в кодировке UTF-8 с автоматическим распознаванием BOM
Чтение = Новый ЧтениеТекста;
Попытка
    Чтение.Открыть("C:\Data\import.csv", КодировкаТекста.UTF8, Символы.ПС, , Истина);
    Строка = Чтение.ПрочитатьСтроку();
    Пока Строка <> Неопределено Цикл
        // Обработка строки
        Строка = Чтение.ПрочитатьСтроку();
    КонецЦикла;
Исключение
    ВызватьИсключение "Ошибка открытия файла: " + ОписаниеОшибки();
Фиксировать
    Чтение.Закрыть();
КонецПопытки;

2. Таблица сопоставления кодировок в 1С

Кодировка в 1СИмя / СтандартПрименение
КодировкаТекста.UTF8UTF-8Современные REST API, JSON, XML, веб-интеграции
КодировкаТекста.ANSIwindows-1251 (CP1251)Файлы выгрузки из 1С 7.7, старые банковские выписки
КодировкаТекста.OEMCP866 (DOS)Файлы обмена систем Клиент-Банк формата 1CClientBankExchange
КодировкаТекста.UTF16UTF-16LE / BEСистемные журналы Windows, выгрузки Active Directory

3. Обработка файлов с неизвестной кодировкой через ДвоичныеДанные

// Определение кодировки по сигнатуре первых байт (BOM)
Двоичные = Новый ДвоичныеДанные("C:\Data\file.txt");
ЧтениеБайт = Новый ЧтениеДанных(Двоичные.ОткрытьПотокДляЧтения());
ПервыеБайты = ЧтениеБайт.Прочитать(3);
// Анализ BOM: EF BB BF -> UTF-8, FF FE -> UTF-16LE
Практический опыт инженера: Для надежной работы серверных обменов на Linux-серверах 1С всегда проверяйте настройку системной локали (команда locale). Локаль должна быть строго ru_RU.UTF-8, иначе функции перевода строк могут приводить к искажению символов.

Частые вопросы (FAQ)

Что делать, если файл Клиент-Банка читается иероглифами?

Большинство выписок формата 1CClientBankExchange создаются в DOS-кодировке CP866. При чтении укажите КодировкаТекста.OEM или строку 'windows-1251'.

Как удалить BOM (Byte Order Mark) из начала файла при выгрузке?

При создании ЗаписьТекста используйте параметр ИспользоватьBOM = Ложь: Запись.Открыть(Путь, КодировкаТекста.UTF8, , , Ложь).

Почему кодировка ANSI по-разному работает на Windows и Linux серверах?

На Windows ANSI соответствует Windows-1251, а на Linux сервер 1С использует системную локаль (по умолчанию UTF-8). Всегда явно указывайте строку 'windows-1251' вместо перечисления ANSI.

Как прочитать текстовый файл в нестандартной кодировке (например, KOI8-R)?

Передайте строковое наименование кодировки вторым параметром метода Открыть(): Чтение.Открыть(Путь, 'koi8-r').