- Модуль: 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;
}