Администрирование · 12 мин
Какая кодировка используется в 1С
Какие кодировки использует 1С для файлов, обмена данными и веб-сервисов. Где возникают кракозябры, как определить кодировку и исправить текст без потери данных.
Короткий ответ на вопрос «какая кодировка используется в 1С» зависит от контекста: внутри платформы строки хранятся в Unicode (UTF-16), а вот текстовые файлы, обмены и интеграции могут работать в UTF-8, Windows-1251, KOI8-R или DOS-кодировках. Именно на стыке этих форматов и появляются «кракозябры» — когда файл записан в одной кодировке, а прочитан в другой.
Для пользователя это проявляется в типичных сценариях: загрузка прайса поставщика, выгрузка в банк-клиент, обмен с сайтом, обработка CSV-файла, печать этикеток на терминале сбора данных. В каждом случае нужно понимать, какую кодировку ожидает внешняя система и какую кодировку использует 1С при чтении или записи.
Ниже разобраны основные места, где возникает вопрос кодировки, способы определить фактическую кодировку файла и безопасные методы исправить текст без потери данных.
Где в 1С вообще встречаются кодировки
Сама платформа 1С:Предприятие работает со строками в Unicode, поэтому внутри базы данных, в макетах и в интерфейсе проблем с кодировкой нет — русский, английский и любые другие символы хранятся корректно. Вопрос кодировки появляется только при обмене с внешним миром.
Типичные точки контакта: чтение и запись текстовых файлов (TXT, CSV, XML, JSON), обмен через веб-сервисы и HTTP-запросы, файловые выгрузки для банков и госорганов, загрузка данных от поставщиков, COM-соединения и OLE, работа с почтой. В каждом случае платформа либо использует кодировку по умолчанию, либо позволяет задать её явно.
Какие кодировки чаще всего встречаются в обменах с 1С
На практике при работе с 1С приходится сталкиваться с ограниченным набором кодировок. Знание их особенностей помогает быстро локализовать проблему.
| Кодировка | Где встречается | Особенности |
|---|---|---|
| UTF-8 | Сайты, веб-сервисы, JSON, современные выгрузки | Стандарт де-факто для обмена через интернет; поддерживает любые символы |
| UTF-8 с BOM | Файлы, которые должен открывать Excel и внешние системы | Метка BOM в начале файла помогает программам определить кодировку автоматически |
| Windows-1251 (ANSI) | Старые выгрузки, dbf-подобные файлы, банковские форматы | Однобайтовая кириллическая кодировка Windows; частая причина кракозябр |
| CP866 (DOS) | Терминалы сбора данных, старые кассовые программы | Устаревшая кодировка MS-DOS, встречается в торговом оборудовании |
| KOI8-R | Наследие Unix-систем, редкие старые обмены | Практически вытеснена, но встречается в архивных форматах |
| UTF-16 | Отдельные XML-выгрузки, файлы с явным указанием | Двухбайтовая кодировка; используется реже UTF-8 |
Важно понимать: одна и та же выгрузка «1С → банк» или «поставщик → 1С» может требовать конкретную кодировку по регламенту формата. Например, многие банковские форматы исторически рассчитаны на Windows-1251, а обмен с сайтом на типовой CMS почти всегда идёт в UTF-8.
Самый частый случай: файл в UTF-8 открыт как ANSI
Типично при обмене с ТСД и старым ПО
Встречается в архивных выгрузках
Данные уже потеряны при записи — нужна исходная версия файла
Как узнать кодировку конкретного файла
Прежде чем что-то исправлять, нужно определить фактическую кодировку исходного файла. Делать это «на глаз» по кракозябрам можно, но надёжнее использовать инструменты.
Самый доступный способ — открыть файл в редакторе, который умеет определять и переключать кодировки, например Notepad++. В меню «Кодировки» видно, как файл интерпретирован сейчас, и можно переключить отображение: если при выборе UTF-8 текст становится читаемым, значит файл записан в UTF-8. Дополнительно стоит проверить наличие BOM — служебных байт в начале файла, которые явно указывают на UTF-8 или UTF-16.
Если файл пришёл от контрагента или из другой системы, правильнее всего уточнить кодировку в документации к формату обмена или у отправителя. Это избавляет от угадывания и от риска «исправить» файл неправильно.
- 1Откройте файл в Notepad++ или аналогичном редакторе с поддержкой кодировок
- 2Посмотрите текущую кодировку в строке состояния или меню «Кодировки»
- 3Если текст нечитаем — переключайте между UTF-8 и Windows-1251 (ANSI), пока текст не станет корректным
- 4Проверьте наличие BOM: пункт «UTF-8-BOM» отличается от просто «UTF-8»
- 5Зафиксируйте результат — именно эту кодировку нужно указать при чтении файла в 1С
Как задать кодировку при чтении и записи файлов в 1С
Во встроенном языке 1С кодировка задаётся явно при создании текстовых объектов. Для чтения и записи текстовых файлов используются объекты ЧтениеТекста и ЗаписьТекста, которым кодировку можно передать параметром.
// Чтение файла в явно указанной кодировке
Чтение = Новый ЧтениеТекста("C:\Обмен\прайс.csv", КодировкаТекста.UTF8);
Строка = Чтение.ПрочитатьСтроку();
// Запись файла в Windows-1251 для банковского формата
Запись = Новый ЗаписьТекста("C:\Обмен\kl_to_1c.txt", КодировкаТекста.ANSI);
Запись.ЗаписатьСтроку(ДанныеДляБанка);
Запись.Закрыть();Доступные значения перечисления КодировкаТекста включают UTF8, UTF16, ANSI, OEM, UTF8NoBOM и системную кодировку по умолчанию. ANSI соответствует Windows-1251 для русскоязычной системы, OEM — кодировке DOS (CP866).
Если кодировку не указывать, платформа использует значение по умолчанию — и вот здесь кроется большинство ошибок: на одном компьютере обработка работает, на другом даёт кракозябры, потому что различаются системные настройки. Правило простое: в прикладном коде кодировку всегда следует указывать явно.
Для HTTP-запросов и веб-сервисов кодировка обычно определяется заголовком Content-Type ответа (например, charset=utf-8). Если внешний сервис отдаёт неверный заголовок, тело ответа придётся читать как двоичные данные и декодировать вручную через ПолучитьСтрокуИзДвоичныхДанных.
Как исправить кракозябры и конвертировать файл
Если файл уже получен в «неправильной» кодировке, есть два пути: переконвертировать сам файл или правильно прочитать его в 1С. Второй вариант предпочтительнее, так как не меняет исходные данные.
Для конвертации файла в Notepad++ используется функция «Преобразовать в UTF-8» (именно «Преобразовать», а не переключение отображения). После преобразования файл сохраняется уже в новой кодировке. Перед конвертацией обязательно сделайте резервную копию исходного файла — при ошибочном преобразовании данные могут быть испорчены безвозвратно.
Если кракозябры видны уже внутри 1С — например, в загруженных наименованиях товаров — значит, файл был прочитан с неверной кодировкой. В этом случае не нужно править данные вручную: удалите загруженные записи (или откажитесь от сохранения) и повторите загрузку с правильной кодировкой. Ручное редактирование тысяч позиций всегда хуже, чем одна повторная загрузка.
Типичные сценарии и решения
Обмен с сайтом (CommerceML, JSON)
Типовые обмены с сайтами работают в UTF-8. Если на сайте товары отображаются кракозябрами после выгрузки из 1С, причина обычно в том, что сайт интерпретирует файл как windows-1251, либо веб-сервер отдаёт неверный заголовок charset. Проверяется это открытием XML-файла выгрузки напрямую в браузере.
Выгрузка в банк-клиент
Многие банковские форматы (например, классический обмен через текстовые файлы) требуют Windows-1251. Если банк отклоняет файл или ФИО контрагентов отображаются неверно, проверьте, что запись выполняется с КодировкаТекста.ANSI и без BOM.
Загрузка CSV-прайсов
CSV от поставщиков приходит в самых разных кодировках: UTF-8, Windows-1251, иногда UTF-16 с разделителем-табуляцией. Перед настройкой постоянной загрузки один раз определите кодировку вручную и зафиксируйте её в настройках обработки. Если поставщик формирует файл из Excel, чаще всего это Windows-1251.
Терминалы сбора данных и торговое оборудование
ТСД и старое кассовое ПО нередко работают в CP866 (OEM). Признак — характерные кракозябры вида «Њ®Ј®ўЁп». Решение — чтение файлов с КодировкаТекста.OEM или настройка выгрузки на стороне оборудования, если она это позволяет.
Как выбрать действие
Частые ошибки при работе с кодировками
Отдельная ошибка — предполагать, что «1С сама разберётся». Платформа корректно работает с Unicode внутри, но на границе с файлами всегда действует конкретное правило кодирования, и если оно не задано явно, результат зависит от окружения.
Что важно запомнить
Внутри 1С строки хранятся в Unicode, проблемы возникают только при обмене файлами и интеграциях. Всегда указывайте кодировку явно (КодировкаТекста.UTF8 / ANSI / OEM), определяйте кодировку чужих файлов до загрузки, не конвертируйте файлы без резервной копии, а знаки вопроса вместо текста означают безвозвратную потерю данных.
Частые вопросы
Какая кодировка используется в 1С по умолчанию?
Для текстовых файлов при неуказанной кодировке используется системная кодировка операционной системы — для русскоязычной Windows это обычно Windows-1251 (ANSI). Поскольку значение зависит от окружения, в коде обменов кодировку принято задавать явно через КодировкаТекста.
Как сохранить файл из 1С в UTF-8?
Используйте объект ЗаписьТекста с параметром КодировкаТекста.UTF8. Если внешняя система требует файл без BOM, укажите КодировкаТекста.UTF8NoBOM — байты-метки в начале файла записаны не будут.
Почему товары после загрузки из CSV отображаются кракозябрами?
Файл записан в одной кодировке (чаще UTF-8 или Windows-1251), а прочитан обработкой в другой. Определите реальную кодировку файла в редакторе вроде Notepad++ и укажите её в настройках загрузки, затем выполните загрузку повторно. Редактировать уже загруженные записи вручную не нужно.
Чем отличается UTF-8 от UTF-8 с BOM и что выбрать для обмена?
BOM — три служебных байта в начале файла, помогающие программам автоматически распознать UTF-8. Excel и многие сторонние программы без BOM могут открыть файл неверно, поэтому для файлов «для людей» вариант с BOM удобнее. Для автоматических обменов и веб-сервисов чаще используют UTF-8 без BOM — некоторые парсеры считают BOM лишними данными.
Можно ли восстановить текст, если вместо букв стали знаки вопроса?
Нет. Знаки вопроса означают, что символы были заменены при записи в кодировку, которая их не поддерживает, — исходная информация в файле уже отсутствует. Нужно получить исходную версию файла от отправителя или из резервной копии и обработать её с корректной кодировкой.
Зависит ли кодировка выгрузки от версии платформы 1С?
Набор доступных значений КодировкаТекста и поведение по умолчанию в целом стабильны между актуальными версиями платформы, но детали (например, поддержка UTF8NoBOM) стоит проверять в документации по синтакс-помощнику вашей версии. Прикладной код с явно указанной кодировкой переносится между версиями без изменений.