Блог разработчика 1С-Битрикс

Метод convertEncoding в Битрикс

Метод \Bitrix\Main\Text\Encoding::convertEncoding() используется для конвертации строк, массивов и объектов типа \SplFixedArray из одной кодировки в другую. Он часто применяется при обмене данными с внешними сервисами, для корректного сохранения или вывода данных в требуемой кодировке.

Метод convertEncoding в Битриксе

При этом важно помнить, что SplFixedArray — это класс, который во многом аналогичен обычному PHP-массиву, однако имеет фиксированный размер и позволяет использовать исключительно целочисленные индексы. Эти ограничения дают преимущество в виде меньшего использования памяти по сравнению со стандартными массивами.

Описание метода


string|array|\SplFixedArray|boolean public static
\Bitrix\Main\Text\Encoding::convertEncoding(
    string|array|\SplFixedArray $data,
    string $charsetFrom,
    string $charsetTo,
    string $errorMessage = ""
);
    

$data
Исходные данные для конвертации. Могут быть представлены в виде строки, массива или объекта типа \SplFixedArray.

Примечание: Класс SplFixedArray обеспечивает базовую функциональность, схожую с массивами, но размер такого массива фиксирован и изменяется вручную, а индексы должны быть целочисленными.

$charsetFrom
Кодировка, в которой изначально находятся данные.

$charsetTo
Целевая кодировка, в которую нужно перевести данные.

$errorMessage (необязательный параметр)
Сообщение об ошибке, которое может выводиться или логироваться при неудачной конвертации. Зависит от внутренней реализации и того, как вы обрабатываете возврат false.

Метод возвращает:

  • Сконвертированные данные (строку, массив или \SplFixedArray), если операция прошла успешно;
  • false, если произошла ошибка при конвертации.

Пример использования

Рассмотрим простой пример, когда нам необходимо перевести строку из кодировки Windows-1251 в UTF-8:


<?php

use Bitrix\Main\Text\Encoding;

// Исходная строка в Windows-1251
$inputString = "Пример строки в Windows-1251";

// Конвертируем в UTF-8
$result = Encoding::convertEncoding($inputString, "Windows-1251", "UTF-8");

if ($result === false) {
    // Обрабатываем ошибку, выводим кастомное сообщение или логируем
    echo "Ошибка конвертации!";
} else {
    // Успешно сконвертированная строка
    echo $result;
}
    

Аналогично можно конвертировать целые массивы или объекты типа \SplFixedArray. В случае массивов метод пройдётся по всем элементам (включая вложенные массивы) и переведёт каждый строковый элемент в нужную кодировку.

Особенности и рекомендации

  • Проверяйте кодировки: Убедитесь, что вы знаете исходную кодировку данных и желаемую целевую кодировку. Ошибочно указанные кодировки могут привести к некорректным символам.
  • Обработка ошибок: Метод возвращает false в случае неудачи. Планируйте логику обработки подобных ситуаций (логирование, уведомления и т. д.).
  • Пакетная конвертация: Если нужно конвертировать много данных, имеет смысл использовать этот метод в цикле или скрипте миграции, чтобы избежать повторной логики по работе с кодировками.
  • Performance: Конвертация может быть ресурсоёмкой при больших объёмах данных. Следует тестировать производительность и при необходимости оптимизировать.

Заключение

Метод convertEncoding в Битриксе — удобный инструмент для конвертации данных между различными кодировками. Он помогает сохранить целостность текстов и избежать проблем с нечитаемыми символами при работе с внешними источниками или собственными внутренними модулями. При работе с SplFixedArray данный метод также учитывает особенности фиксированного размера и типизации индексов, обеспечивая более экономное использование памяти, чем обычные массивы.

Теги: convertEncoding, кодировка, конвертация, D7


Валерий Макеев
09.09.2025 18:49
Этот код конвертирует ассоциативный массив с русскоязычными строками из UTF-8 в Windows-1251 с помощью встроенного метода Битрикс и выводит сообщение об успешной конвертации или ошибке.
Код
<?php

use Bitrix\Main\Text\Encoding;

// Массив с данными в кодировке UTF-8, который нужно преобразовать в Windows-1251
$data = [
    'title' => 'Тестовое задание',
    'description' => 'Пример текста на русском языке',
    'items' => ['Элемент 1', 'Элемент 2']
];

$result = Encoding::convertEncoding($data, 'UTF-8', 'Windows-1251');

if ($result !== false) {
    echo "Конвертация успешна. Данные переведены из UTF-8 в Windows-1251.";
} else {
    echo "Ошибка при конвертации данных.";
}

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.