• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/virtual_io_filesystem.php
  • Класс: CBXVirtualIoFileSystem
  • Вызов: CBXVirtualIoFileSystem::ConvertCharset
static function ConvertCharset($string, $direction = 1, $skipEvents = false)
{
	if (is_null(self::$systemEncoding))
	{
		self::$systemEncoding = mb_strtolower(defined("BX_FILE_SYSTEM_ENCODING")? BX_FILE_SYSTEM_ENCODING : "");
		if (empty(self::$systemEncoding))
		{
			if (mb_strtoupper(mb_substr(PHP_OS, 0, 3)) === "WIN")
				self::$systemEncoding = "windows-1251";
			else
				self::$systemEncoding = "utf-8";
		}
	}

	if (is_null(self::$serverEncoding))
	{
		if (defined('BX_UTF'))
			self::$serverEncoding = "utf-8";
		elseif (defined("SITE_CHARSET") && (SITE_CHARSET <> ''))
			self::$serverEncoding = SITE_CHARSET;
		elseif (defined("LANG_CHARSET") && (LANG_CHARSET <> ''))
			self::$serverEncoding = LANG_CHARSET;
		elseif (defined("BX_DEFAULT_CHARSET"))
			self::$serverEncoding = BX_DEFAULT_CHARSET;
		else
			self::$serverEncoding = "windows-1251";

		self::$serverEncoding = mb_strtolower(self::$serverEncoding);
	}

	if (self::$serverEncoding == self::$systemEncoding)
		return $string;

	if ($direction == self::directionEncode)
		$result = BitrixMainTextEncoding::convertEncoding($string, self::$serverEncoding, self::$systemEncoding);
	else
		$result = BitrixMainTextEncoding::convertEncoding($string, self::$systemEncoding, self::$serverEncoding);

	if (
		defined('BX_IO_Compartible')
		&& !$skipEvents
		&& (BX_IO_Compartible === 'Y')
	)
	{
		$arEventParams = array(
			'original' => $string,
			'converted' => $result,
			'direction' => $direction,
			'systemEncoding' => self::$systemEncoding,
			'serverEncoding' => self::$serverEncoding
		);

		foreach (GetModuleEvents("main", "BXVirtualIO_ConvertCharset", true) as $arEvent)
		{
			$evResult = ExecuteModuleEventEx($arEvent, array($arEventParams));
			if ($evResult !== false)
			{
				$result = $evResult;
				break;
			}
		}
	}

	return $result;
}