Шпаргалка: Работа с файлами с кириллицей, пробелами и спец.символами на cp1251
Запись от 04.08.2014
Просто так CMS (да и сам php) не видит файлы, в именах которых есть кириллица, пробелы, спец.символы. По крайней мере такая ситуация есть на cp1251.
Наверное, на UTF-8 такой проблемы нет, не проверял.
Итак, если вы столкнулись с такой же проблемой, то пригодится этот код:
И пример для проверки (файл с кириллицей загружаем в корень, а название указываем в переменной $sFileName):
Наверное, на 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;
}