Шпаргалка: Работа с файлами с кириллицей, пробелами и спец.символами на cp1251

Просто так CMS (да и сам php) не видит файлы, в именах которых есть кириллица, пробелы, спец.символы. По крайней мере такая ситуация есть на cp1251. 
Наверное, на UTF-8 такой проблемы нет, не проверял. 

Итак, если вы столкнулись с такой же проблемой, то пригодится этот код:
CFile::MakeFileArray(mb_convert_encoding($_SERVER['DOCUMENT_ROOT'].'/'.$sFileName, 'UTF-8', 'Windows-1251'));

И пример для проверки (файл с кириллицей загружаем в корень, а название указываем в переменной $sFileName):
global $USER;
CModule::IncludeModule('iblock');

$arFile = CFile::MakeFileArray(mb_convert_encoding($_SERVER['DOCUMENT_ROOT'].'/'.$sFileName, 'UTF-8', 'Windows-1251'));

$el = new CIBlockElement;
$arLoadProductArray = Array(
   'MODIFIED_BY' => $GLOBALS['USER']->GetID(),
   'IBLOCK_SECTION_ID' => false,
   'IBLOCK_ID' => 3,
   'NAME' => 'Элемент',
   'ACTIVE' => 'Y',
   'PREVIEW_TEXT' => 'текст для списка элементов',  
   'DETAIL_TEXT' => 'текст для детального просмотра', 
   'DETAIL_PICTURE' => $arFile
);

if($PRODUCT_ID = $el->Add($arLoadProductArray)) {
   echo 'New ID: '.$PRODUCT_ID;
} else {
   echo 'Error: '.$el->LAST_ERROR;  
}