Изменение кодировки с CP-1251 на UTF-8 в html описаниях товара 1C-Bitrix

      После изменения кодировки сайта на 1С-Bitrix c CP-1251 на UTF-8 очень часто наблюдается ситуация, что описания товара выводятся вопросиками. Проблема заключается в том, что меняя кодировку сайта — ее базу данных и файлы, мы не изменяем значения на нужную кодировку в самих таблицах описаний.

     Для решения данной проблемы был найден замечательный скрипт, исправляющий кодировку в html описаниях товара

<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

if($USER->IsAdmin())
{
    global $DB;
    $r = $DB->Query("SEL ECT ID FR OM b_iblock_property WHERE PROPERTY_TYPE='S'");
    while($prop = $r->Fetch())
    {
        $rV = $DB->Query("SELECT ID,VALUE FR OM b_iblock_element_property WHERE IBLOCK_PROPERTY_ID=".$prop['ID']." AND VALUE IS NOT NULL AND VALUE LIKE 'a:%'");
        while($pV = $rV->Fetch())
        {
            $s_cp1251 = iconv('utf-8','windows-1251',$pV['VALUE']);
            $u_cp1251 = unserialize($s_cp1251);
            array_walk_recursive($u_cp1251,'c');
            $s_utf8 = serialize($u_cp1251);
            $updateSql = "UPD ATE b_iblock_element_property SE T VALUE='".$DB->ForSql($s_utf8)."' WH ERE ID=".$pV['ID'];
            $DB->Query($updateSql);
        }
    }
}
function c(&$item, &$key)
{
    global $APPLICATION;
    $item = $APPLICATION->ConvertCharset($item,'windows-1251','UTF-8');
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

 За скрипт спасибо пользователю Evgeniy Pedan

Ветка обсуждений на dev 1С-Bitrix

Пролистать наверх